Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1607 connectés 

  FORUM HardWare.fr
  Programmation

  Aidez un débutant en Java SVP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aidez un débutant en Java SVP

n°112172
Jef34
Je ferai mieux demain
Posté le 14-03-2002 à 17:33:50  profilanswer
 

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...

mood
Publicité
Posté le 14-03-2002 à 17:33:50  profilanswer
 

n°112185
jupiler
Un cousin...
Posté le 14-03-2002 à 17:38:25  profilanswer
 

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  
n°112187
jupiler
Un cousin...
Posté le 14-03-2002 à 17:39:19  profilanswer
 

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  
n°112191
gfive
Posté le 14-03-2002 à 17:42:14  profilanswer
 

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à..

n°112224
Jef34
Je ferai mieux demain
Posté le 14-03-2002 à 18:19:27  profilanswer
 

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:

n°112278
Jef34
Je ferai mieux demain
Posté le 14-03-2002 à 20:26:46  profilanswer
 

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 ?

n°112297
darklord
You're welcome
Posté le 14-03-2002 à 21:12:40  profilanswer
 

Runtime.exec()


---------------
Just because you feel good does not make you right
n°112301
Kahyman
Posté le 14-03-2002 à 21:19:27  profilanswer
 

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

n°112302
Jef34
Je ferai mieux demain
Posté le 14-03-2002 à 21:30:31  profilanswer
 

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 ??

n°112307
Kahyman
Posté le 14-03-2002 à 21:36:51  profilanswer
 

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.

mood
Publicité
Posté le 14-03-2002 à 21:36:51  profilanswer
 

n°112312
darklord
You're welcome
Posté le 14-03-2002 à 21:47:42  profilanswer
 

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
n°112314
HappyHarry
Posté le 14-03-2002 à 21:49:04  profilanswer
 

la j'hallucine  :ouch:

n°112317
HappyHarry
Posté le 14-03-2002 à 21:53:45  profilanswer
 

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

n°112319
HappyHarry
Posté le 14-03-2002 à 21:57:27  profilanswer
 

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:

n°112382
gfive
Posté le 15-03-2002 à 00:18:54  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Aidez un débutant en Java SVP

 

Sujets relatifs
[JAVA] Creation de classes at runtime...[java] bean - Attention question con - nerveux passez votre chemin
Java - coté serveur, ça donne quoi !?[JAVA] Comment virer la console
[java] Deprecated qqun aurait une def en français ?[java][jsp][servlet] Pb de perte d'ID de session entre servlet et jsp
[JAVA] Recuperation d'un fichier source[JAVA] truc bizarre pour debutant en applet...
[JAVA] Quels sont vos forums préférés pour développer en Java ? 
Plus de sujets relatifs à : Aidez un débutant en Java SVP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR