Problème java création de calculatrice console

Résolu/Fermé
beno-yac Messages postés 96 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 16 décembre 2020 - Modifié par KX le 21/06/2016 à 08:01
beno-yac Messages postés 96 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 16 décembre 2020 - 21 juin 2016 à 21:40
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);
 }
 
 }

}
A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
21 juin 2016 à 08:08
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
beno-yac Messages postés 96 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 16 décembre 2020
21 juin 2016 à 11:53
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.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
21 juin 2016 à 20:24
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.
0
beno-yac Messages postés 96 Date d'inscription samedi 11 décembre 2010 Statut Membre Dernière intervention 16 décembre 2020
21 juin 2016 à 21:40
Merci beaucoup ça marche
0