Я пытаюсь ввести пользователя в несколько значений, и компьютер вернет ответ. Например, они вошли бы в 10 + 11 - 15/12? то он выдаст ответ. Я тестировал это, и он принимает только первое число и последний оператор, а последний введенный номер и вычисляет этот ответ. (выход от около 10/12). Из того, что я могу сказать, мои математические методы работают правильно, но я тоже их прикрепил. Как я могу заставить его продолжать читать в новых пользовательских вводах, а затем выполнить математику, чтобы выяснить ответ?Как я могу заставить мой цикл продолжать повторно вводить новые переменные и операторы, чтобы продолжать вычислять?
Это мой код:
static void evaluate(){
// this loads a scanner and prompts the user for input
Scanner input = new Scanner(System.in);
System.out.println("Enter the expression: ");
int answer = 0;
int num = 0;
int input1, input2;
char operator = '+' ;
input1 = input.nextInt();
operator = input.next().charAt(0);
input2 = input.nextInt();
if(operator == '?')
return;
//this loop will continue until ? is entered
do{
if(operator == '?')
break;
operator = input.next().charAt(0);
input2 = input.nextInt();
// this will detect which operator is used
switch (operator) {
case '+': answer = addition(input1, input2);
break;
case '-': answer = subtract(input1, input2);
break;
case '*': answer = multiply(input1, input2);
break;
case '/': answer = division(input1, input2);
break;
case '%': answer = remainder(input1, input2);
} } while (operator != '?');
System.out.println("The result is " + answer);
}
Эти методы для сложения, вычитания, деления, умножения и модуло.
// this is the math if a + is used as an operator
static int addition (int num1, int num2){
int add;
add = num1 + num2;
return add;
}
// this is the math if a - is used as an operator
static int subtract (int num1, int num2){
int minus;
minus = num1 - num2;
return minus;
}
// this is the math if a * is used as an operator
static int multiply (int num1, int num2){
int multi;
multi = num1 * num2;
return multi;
}
// this is the math if a/is used as an operator
static int division (int num1, int num2){
int div;
div = num1/num2;
return div;
}
// this is the math if a % is used as an operator
static int remainder (int num1, int num2){
int modulos;
modulos = num1 % num2;
return modulos;
}
Вот что я и подумал! но после того, как я попробовал, цикл продолжится, даже если я войду в? и он не будет компилировать математику. вот как это выглядит. \t \t 'operator = input.next(). CharAt (0); input2 = input.nextInt(); \t \t if (operator == '?') \t break; 'Также я помещал в белые пробелы между –
@ 154guy Нет, он не будет продолжать цикл. Существует проблема с тем, как вы читаете ввод. Вы никогда не обновляете 'input1'. См. Обновленное решение. – user2004685
Когда я ввел код, указанный вами по адресу http://ideone.com/pJR5lY, он говорит, что в основном методе есть ошибка, что существует исключение несоответствия. –