Aidez un débutant en Java SVP - Programmation
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.
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
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
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à..
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
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 ?
Marsh Posté le 14-03-2002 à 21:12:40
Runtime.exec()
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.
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 ??
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.
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
voilà le résultat ...
Marsh Posté le 14-03-2002 à 21:53:45
meme en lisant le message du compilo il aurait pu comprendre
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
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..
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...