Aidez un débutant en Java SVP

Aidez un débutant en Java SVP - Programmation

Marsh Posté le 14-03-2002 à 17:33:50    

J'ai un probleme avec un programme en Java..
 
 
import java.io.*;
       
public class Calcul
{
 public static void main (String[] args)
 {
  //Initialise les variables a,c avec les chiffres et b avec le caractère qui peut être +,-,*,/
  int a=Integer.parseInt(args[0]);
  char b=args[1].charAt(0); //Besoin d'explication sur charAt(0)
  int c=Integer.parseInt(args[2]);
 
  // Evite la division par zéro en testant b (division) et c (zéro)
   
  if ((b=='/';)&&(c==0))  
  {
   System.out.println("Division par Zéro" );
   System.exit(0);
  }
 
   
 if (b=='+';) {System.out.println(a +b +c +"=" +(a+c));}
  if (b=='-';) {System.out.println(a +b +c +"=" +(a-c));}
  if (b=='*';) {System.out.println(a +b +c +"=" +(a*c));}
  if (b=='/';) {System.out.println(a +b +c +"=" +(a/c));}
 
   
 
 }  
}

 
Tout fonctionne, mais je me demande pourquoi j'ai été obligé remplacé la partie soulignée par
 
 if (b=='+';) {System.out.println(a +"" +b +"" +c +"=" +(a+c));}
  if (b=='-';) {System.out.println(a +"" +b +"" +c +"=" +(a-c));}
  if (b=='*';) {System.out.println(a +"" +b +"" +c +"=" +(a*c));}
  if (b=='/';) {System.out.println(a +"" +b +"" +c +"=" +(a/c));}

 
Pour avoir 1+1=2 par exemple. Sans ce remplacement j'avais  45=2 au lieu de 1+1=2.
 
Pour vous aider si je mets en argument 0 + 0, j'ai  comme réponse
43=0
 
Je ne comprends pas le calcul qui est effectué à l'exécution qui me donne ces chiffres 43, 45 ou autres...

Reply

Marsh Posté le 14-03-2002 à 17:33:50   

Reply

Marsh Posté le 14-03-2002 à 17:38:25    

ben il donne priorité aux opérations entre variables de meme type donc il commence par additionner les entiers et les char (qui sont des entiers), puis il additionne un entier et une chaine de caractère ("=" ) et là seulement il convertit la somme d'entier en caractères.


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 14-03-2002 à 17:39:19    

si tu avais mis '=' à la place de "=" tu n'aurais obtenu qu'un entier à l'affichage


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Marsh Posté le 14-03-2002 à 17:42:14    

Parce que, quand t écris ça :  
 
System.out.println(a+b+c+"="+(a+c));
 
avec a et c qui sont des entiers (int) et b un char, ben Java additionne le tout (un char et un int, au final, hein, ben c la même chose!)  
donc, tu a brillament démontré que b casté en char vaut 42 en int! :D:D
 
L'opérateur "+" ne fait de la concaténation de chaînes UNIQUEMENT s'i ly a une chaîne d'un des deux côtés de l'opérateur...Donc, avec des "" entre chaque, ça marche! ;)
Mais bon, cet opérateur est à utiliser avec précaution : au delà de 1 occurence dans une chaîne, la JRE instancie un StirngBuffer(...donc bon, t'as plutôt intérêt à faire ça :  
 
StringBuffer sb= new StringBuffer();
sb.append(a);
sb.append(b);
sb.append(c);
sb.append("=" );
if (b=='+';) {
sb.append(a+c);
}
if (b=='-';) {
sb.append(a-c);
}
if (b=='/';) {
sb.append(a/c);
}
if (b='*';) {
sb.append(a*c);
}
System.out.println(sb.toString());
 
 
voilà voilà..

Reply

Marsh Posté le 14-03-2002 à 18:19:27    

Ok, merci beaucoup à tous.. J'espère que vous avez laissé la notification car malheureusement pour vous, je risque d'avoir à nouveau besoin d'aide ... th  :jap:   :love:

Reply

Marsh Posté le 14-03-2002 à 20:26:46    

Y a-t-il un moyen pour qu'un programme Java lance un exécutable.
 
Par exemple calc.exe (la calculatrice de Windows) ??
 
En somme les prog java peuvent-ils avoir une interaction avec les prog de Windows ?

Reply

Marsh Posté le 14-03-2002 à 21:12:40    

Runtime.exec()


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-03-2002 à 21:19:27    

Tu peux lancer (avec Runtime.exec() comme l'a indique Darklord), mais pas toujours avoir une interaction avec les streams ouverts.

Reply

Marsh Posté le 14-03-2002 à 21:30:31    

J'ai un peu de mal
 
public class toto
{
 public static void main (String[] args)
 {
 Runtime.exec(trayit.exe);  
 }
 
 
}
 

 
ca ne marche po. De plus comment indiquer un chemin absolue puisque que je ne peux pas mettre C:\Program Files sans qu'il y ait une erreur ??

Reply

Marsh Posté le 14-03-2002 à 21:36:51    

Jef34 a écrit a écrit :

J'ai un peu de mal
 
public class toto
{
 public static void main (String[] args)
 {
 Runtime.exec(trayit.exe);  
 }
 
 
}
 

 
ca ne marche po. De plus comment indiquer un chemin absolue puisque que je ne peux pas mettre C:\Program Files sans qu'il y ait une erreur ??  




 
Desole mais la regarde un peu les APIs... c'est le MINIMUM pour apprendre.

Reply

Marsh Posté le 14-03-2002 à 21:36:51   

Reply

Marsh Posté le 14-03-2002 à 21:47:42    

Kahyman a écrit a écrit :

 
 
Desole mais la regarde un peu les APIs... c'est le MINIMUM pour apprendre.  




 
c'est pour ca que j'ai donné l'explication minimale. Juste pour voir si il allait essayer de se débrouiller un peu  :sarcastic:  
 
voilà le résultat ...


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-03-2002 à 21:49:04    

la j'hallucine  :ouch:

Reply

Marsh Posté le 14-03-2002 à 21:53:45    

meme en lisant le message du compilo il aurait pu comprendre  :??:

Reply

Marsh Posté le 14-03-2002 à 21:57:27    

c quand meme un vilain vilain parser qui veut pas comprendre ce que le debutant-en-java-qui-a-lu-la-1ere-page-du-bouquin-
de-c++-mais-qui-a-laissé-tomber-parce-qu'il-
fallait-reflechir veut faire  :lol:

Reply

Marsh Posté le 15-03-2002 à 00:18:54    

juste comme ça, essaie de mettre des guillements autour du nom de ton exécutable, des fois.. :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed