Calculatrice simple en java [Résolu/Fermé]

Messages postés
26
Date d'inscription
vendredi 8 janvier 2010
Statut
Membre
Dernière intervention
14 décembre 2011
- - Dernière réponse : xoft-ob
Messages postés
30
Date d'inscription
vendredi 2 septembre 2011
Statut
Membre
Dernière intervention
9 juin 2012
- 19 oct. 2011 à 00:59
Bonjour,

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 :)
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
16079
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 novembre 2019
2455
5
Merci
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));

Dire « Merci » 5

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 69655 internautes nous ont dit merci ce mois-ci

Messages postés
30
Date d'inscription
vendredi 2 septembre 2011
Statut
Membre
Dernière intervention
9 juin 2012
4
Messages postés
26
Date d'inscription
vendredi 8 janvier 2010
Statut
Membre
Dernière intervention
14 décembre 2011
1
1
Merci
merci bien , votre solution ma aider à résoudre le problème ;)