2015-09-14 1 views
-2

Я пытаюсь сделать калькулятор. Я пытаюсь изменить вход пользователя из строки в int с помощью Integer.parseInt.Попытка умножить/разделить пользовательский ввод в Java, используя цикл while, Integer.parseInt и т. Д.

ПРОБЛЕМЫ:

1- Даже когда я пытаюсь вычитать числа, они складываются вместе.

2- Умножение и деление даже не работают. Вот мой код:

public static void main(String[] args) { 

    print("Enter an arithmetic expression: "); 
    String expression = readString(); 

    int num1; 
    int num2; 
    char operator; 
    int i = 0; 

    while (expression.charAt(0) != '0') { 

     do { 
      i++;    
     } while (Character.isDigit(expression.charAt(i))); 

     num1 = Integer.parseInt(expression.substring(0,i)); 
     operator = expression.charAt(i); 
     num2 = Integer.parseInt(expression.substring(i)); 

     int result; 

     switch (operator) { 

     case '+' : result = num1 + num2; break; 
     case '-' : result = num1 - num2; break; 
     case '*' : result = num1 * num2; break; 
     case '/' : result = num1/num2; break; 

     default: result = - 1; 

     } 

     println ("The result is: " + result); 
     print("Enter an arithmetic expression: "); 
     expression = readString(); 
     i=0; 

     } 
    println("The program is terminated. Bye"); 
} 
+0

Попробуйте распечатать переменные с помощью 'System.out.println' вместо фактических операций. Я подозреваю, что вы быстро найдете свою проблему. – CollinD

ответ

1

Печать промежуточных значений, или с помощью отладчика, дал бы вам ответ, но здесь это в любом случае.

Вы имеете в виду:

num2 = Integer.parseInt(expression.substring(i + 1)); 

В противном случае вход 123-12 является:

num1 = Integer.parseInt(expression.substring(0,i)); // "123" 
operator = expression.charAt(i);     // '-' 
num2 = Integer.parseInt(expression.substring(i)); // "-12" 

И 123 - -12 = 123 + 12 = 135.

Смежные вопросы