2016-02-04 1 views
0

Je suis un codeur débutant en Java et j'essaie de faire de cette calculatrice en Java où un utilisateur peut entrer deux nombres et sélectionner l'opération à effectuer sur ces nombres. Cependant, lorsque le code vient à sélectionner l'opérateur, il ignore l'entrée utilisateur et l'instruction if et implémente directement l'instruction else.Simple programme de calculateur en Java

import java.util.Scanner; 


public class Calculator { 

    public static void main(String[] args) { 
     Scanner Calc = new Scanner(System.in); 
     int n1; 
     int n2; 
     int Answer; 

     System.out.println("Enter the first number: "); 
     n1 = Calc.nextInt(); 
     System.out.println("Enter the second number:"); 
     n2 = Calc.nextInt(); 
     System.out.println("Select the order of operation: "); 
     char operator = Calc.nextLine().charAt(0); 


     if (operator == '+') { 
      Answer = (n1 + n2); 
      System.out.println("Answer:" + Answer); 
      } 
     if (operator == '-') { 
      Answer = (n1 - n2); 
      System.out.println("Answer:" + Answer); 
      } 
     if (operator == '*') { 
      Answer = (n1 * n2); 
      System.out.println("Answer:" + Answer); 
      } 
     if (operator == '/') { 
      Answer = (n1/n2); 
      System.out.println("Answer:" + Answer); 
      } 
     else { 
      System.out.println("not implemented yet. Sorry!"); 
     } 


    } 

} 
+4

Copie possible de [Sauter nextLine() après avoir utilisé next(), nextInt() ou d'autres méthodes nextFoo()] (http://stackoverflow.com/questions/13102045/skipping-nextline-after-using-next- nextint-or-other-nextfoo-methods) – Berger

+0

en dehors de votre problème de programmation: vous pourriez vouloir vérifier la division par zéro;) – Niklas

+0

Pour expliquer le lien avec le sujet en double, _nextInt() _ ne consomme pas la "nouvelle ligne" expression, ajoutez donc une instruction _nextLine() _ juste après votre second _nextInt() _. – Berger

Répondre

1

Ajouter Calc.nextLine(); après n2 = Calc.nextInt(); consommer l'alimentation en ligne.

Vous n'êtes pas non plus utiliser else if donc toutes ces if conditions seront vérifiées même si précédent if déjà adapté (résultant dans votre ELSE final en cours d'exécution tant que l'opérateur ne '/').

Dans ce cas, vous devriez probablement utiliser un bloc switch.