Я написал небольшой код Java, чтобы вычислить произведение двух целых чисел, введенных пользователем с помощью сканера. Пользователь вынужден вводить целочисленные значения. Код показан ниже.
import java.util.Scanner;
public class Principal {
public static void main(String[] args) {
int x=0,y=0;
Scanner sc=new Scanner(System.in);
//Asks for the first number until the user inputs an integer
System.out.println("First number:");
while(!sc.hasNextInt()){
System.out.println("Not valid. First number:");
sc.nextLine();
}
x=sc.nextInt();
//Asks for the second number until the user inputs an integer
System.out.println("Second number:");
while(!sc.hasNextInt()){
System.out.println("Not valid. Second number:");
sc.nextLine();
}
y=sc.nextInt();
//Show result
System.out.println(x+"*"+y+"="+x*y);
}
}
l oop для первого числа работает нормально. Но второе не делает: если пользователь вводит что-то, что не является целочисленным значением, сообщение « Недействительно. Второе число: » отображается дважды!
Первое число:
г
Недействительно. Первое число:
2
Второе число:
f
Недействительно. Второй номер:
Недействительно. Второе число:
4
2 * 4 = 8
В чем причина такого поведения? Я предполагаю, что делаю что-то не так.
Я пытался использовать два разных сканера (по одному для каждого числа), и проблема исчезает, но я не думаю, что создание большого количества экземпляров - правильный путь.
Кто-нибудь может помочь?
Спасибо.