Problème java création de calculatrice console

Résolu/Fermé
Signaler
Messages postés
97
Date d'inscription
samedi 11 décembre 2010
Statut
Membre
Dernière intervention
16 décembre 2020
-
Messages postés
97
Date d'inscription
samedi 11 décembre 2010
Statut
Membre
Dernière intervention
16 décembre 2020
-
Bonjour ,
je suis novice en programmation et je souhaiterai savoir quel est le problème dans mon code et pourquoi il boucle quand je clique non la partie do while quand je choisi la réponse "O"

je vous mets en copie le code merci de votre aide

package calculatrice;

import java.util.Scanner;

public class Main {
 
 

 public static void main(String[] args) {
 
    Calculatrice fonction =new Calculatrice();
 Scanner sr = new Scanner(System.in);
 boolean cond1= true;
 boolean cond2= true;
 String expression = sr.nextLine();
 
 while(cond1)
 {
  if(expression.contains("+"))
  {
   
   float x = Float.parseFloat(expression.split("\\+")[0]);
   float y = Float.parseFloat(expression.split("\\+")[1]);
   float c = fonction.somme(x, y);
   System.out.println("le resultat " + c);
   
     }
 
 if(expression.contains("-"))
  {
   
   float x = Float.parseFloat(expression.split("\\-")[0]);
   float y = Float.parseFloat(expression.split("\\-")[1]);
   float c = fonction.soustraction(x, y);
   System.out.println("le resultat " + c);
   
  }
  
 if(expression.contains("*"))
  {
   
   float x = Float.parseFloat(expression.split("\\*")[0]);
   float y = Float.parseFloat(expression.split("\\*")[1]);
   float c = fonction.multiplication(x, y);
   System.out.println("le resultat " + c);
   
  }
  
 if(expression.contains("/")){
  
  float x = Float.parseFloat(expression.split("\\/")[0]);
  float y = Float.parseFloat(expression.split("\\/")[1]);
  float c = fonction.divion(x, y);
  System.out.println("le resultat " + c);
  
 }
   
 
 do{
  System.out.println("voulez vous effecteur une autre operation");
  System.out.println("O pour Oui ");
  System.out.println("N pour Non ");
  String choix = sr.nextLine();
 
  if ((!(choix.equals("O")))&& (!(choix.equals("N"))))
  {
   cond2 =false;
   System.out.println("La valeur saisit n'est pas Correcte veulliez choisir N ou O seulement");
   }
  else if(choix.equals("N"))
     {
   cond1=false;
   }
  else
    {
   System.out.println("Entrez une nouvelle valeur à calculer");

    }
  }while(cond2);
 }
 
 }

}

1 réponse

Messages postés
16437
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
28 novembre 2021
2 918
Bonjour,

Si tu utilises un IDE (Eclipse, IntelliJ, NetBeans...) tu devrais te mettre en debug pour voir pas à pas ce qui se passe mal.

Perso, j'ai du mal comprendre la question, mais en testant j'ai bien ce que l'on veut : je choisit "O" il continue, je choisit "N" il s'arrête.
1
Merci

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

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
97
Date d'inscription
samedi 11 décembre 2010
Statut
Membre
Dernière intervention
16 décembre 2020

Salut KX,

premièrement merci pour ta réponse
Je travaille avec l'IDE Eclipse et j'ai faire un debug et je te tiens au courant mais normalement ça ne marche pas car quand j'essaye ça boule sans fin sur le do while
Et juste pour t'expliquer un peu plus: l'utilisateur tape une expression en rentre dans notre while cond1 est vrai on l'évalue puis on rentre dans dans un do while et sa variable cond2pour lui demander si il souhaiterais taper une autre expression puis on lis se qu'il tape si c'est "O" on tape reviens au debut si c'est "N" on sort fin du programme et si c'est ni "N" ni "O" on reboucle dans le do while jusqu'à se qu'il tapes la bonne lettre.
Messages postés
16437
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
28 novembre 2021
2 918
Je pense avoir trouvé le problème (il y en a 2 en fait)

Au lieu de faire :
String expression = sr.nextLine();
 
while(cond1)
{
Il faudrait faire :
while(cond1)
{
    String expression = sr.nextLine();
Sinon, tu redemandes jamais la nouvelle ligne à entrer.

Et à la fin, au lieu de faire :
    else
    {
        System.out.println("Entrez une nouvelle valeur à calculer");
    }
} while(cond2);
Il faudrait faire :
    else
    {
        System.out.println("Entrez une nouvelle valeur à calculer");
        cond2 = false;
    }
} while(cond2);
Sinon, tu ne sors pas de la boucle.

Remarque : globalement ton programme peut facilement se simplifier, d'une part sur la partie split à répétition pour chaque cas, d'autre part sur l'imbrication des boucles.
Messages postés
97
Date d'inscription
samedi 11 décembre 2010
Statut
Membre
Dernière intervention
16 décembre 2020

Merci beaucoup ça marche