je suis débutante en programmation java , et j'ai essai je realisé une calculatrice simple "sans graphique" en java mais ça marche pas :( et j'ai pas trouver l'erreur .
voila le code :
import java.util.Scanner;
public class Calculatrice {
public static void main(String[] argv )
{
Scanner s= new Scanner(System.in);
System.out.println("donner le 1 er caractere ");
int n=s.nextInt();
System.out.println("donner le 2 eme caractere ");
int m=s.nextInt();
System.out.println("donner l'operateur");
String c=s.nextLine();
System.out.println(c);
if (c=="+") System.out.println(n+"+"+m+"="+(n+m));
else if (c=="-") System.out.println(n+"-"+m+"="+(n-m));
else if (c=="*") System.out.println(n+"*"+m+"="+(n*m));
else if (c=="/") System.out.println(n+"+"+m+"="+(n/m));
else System.out.println ("erreur");
}
}
et merci d'avance :)
Quand tu demandes de récupérer nextInt, Scanner récupères juste l'entier pas le reste de la ligne, par exemple si tu tapes "123abcdef\n", il va lire 123 mais la chaîne "abcdef\n" va être en attente qu'on la récupère. Il faut faire un nextLine derrière pour que la chaîne soit consommée, parce que sinon il ne le fera qu'au prochain nextLine et du coup ton opérateur c sera égal à "abcdef\n"
Solution simple pour corriger le bug : après un nextInt tu mets un nextLine qui va consommer tout le reste de la ligne que tu as entré (en particulier le saut de ligne \n)
System.out.println("donner le 1 er caractere ");
int n=s.nextInt();
s.nextLine();
System.out.println("donner le 2 eme caractere ");
int m=s.nextInt();
s.nextLine();
String c=s.nextLine();
System.out.println(c);
Autre bug, mais c'est une erreur de débutant ce coup-ci, il ne faut pas comparer deux chaînes de caractères avec == mais avec la méthode equals :
if (c.equals("+"))
System.out.println(n+"+"+m+"="+(n+m));