первый пост, поэтому легко на меня. Я знаю, что это простой надзор с моей стороны, но у меня возникли проблемы с визуализацией того, что на самом деле происходит здесь, поэтому любое понимание было бы очень оценено.Вход сканера пропускается внутри во время цикла
Проблема заключается в том, что мой текущий код неоднократно печатает «Недопустимый формат номера. Попробуйте еще раз». в консоль при вводе неправильного операнда i.e «2a + 2» Я специально попросил использовать nextDouble и следующий в этом сценарии.
Попытавшись исправить это самостоятельно, я убежден, что он вызвал вызов nextDouble и следующий после друг друга, требуя использования nextLine, но я до сих пор не понимаю, почему именно.
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
boolean repeat = true;
double n1,n2;
String op;
System.out.print("Enter a simple mathematical formula: ");
while(repeat){
try{
n1 = in.nextDouble();
op = in.next();
n2 = in.nextDouble();
switch(op){
case "+":
System.out.println("Result: " + (n1 + n2));
break;
case "-":
System.out.println("Result: " + (n1 - n2));
break;
case "/":
System.out.println("Result: " + (n1/n2));
break;
case "*":
System.out.println("Result: " + (n1 * n2));
break;
default:
System.out.println("Invalid Operator. Try again.");
continue;
}
repeat = false;
}catch(InputMismatchException e){
System.out.println("Invalid number format. Try again.");
}
}
in.close();
}
Как вы вводите данные? Я предполагаю, что вы вводите '2a + ×' за один раз, а затем отбрасываете свой код. Вы должны добавить один операнд/оператор за раз, если хотите сохранить свой код так, как есть. –