2016-02-04 3 views
0

Я новичок-кодер в Java, и я пытаюсь сделать этот калькулятор в java, где пользователь может ввести два числа и выбрать операцию, которая будет выполняться на этих числах. Однако, когда код приходит к выбору оператора, он пропускает пользовательский ввод и оператор if и непосредственно реализует инструкцию else.Простая программа калькулятора в 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

Возможный дубликат [Пропуск nextLine() после использования следующих(), nextInt() или других методов nextFoo()] (http://stackoverflow.com/questions/13102045/skipping-nextline-after-using-next- nextint-or-other-nextfoo-methods) – Berger

+0

помимо вашей проблемы с программированием: вы можете проверить деление на ноль;) – Niklas

+0

Чтобы объяснить ссылку на дублируемую тему, _nextInt() _ не потребляет «новую строку», выражение, поэтому добавьте инструкцию _nextLine() _ сразу после второго _nextInt() _. – Berger

ответ

1

Добавить Calc.nextLine(); после n2 = Calc.nextInt(); потреблять корм линии.

Вы также не используете else if поэтому все эти if условия будут проверены, даже если предыдущий if уже согласованы (в результате чего окончательный еще выполняется, пока оператор не '/').

В этом случае вы, вероятно, должны просто использовать блок switch.