如果我将int number = scanner.nextInt ();
放在if
括号中并输入错误的输入,则会出现问题。
但是,如果我没有在if
之外编写它,则在输入错误的输入时会出现以下错误
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at UserInput.main(UserInput.java:15)
代码:
import java.util.Scanner;
public class UserInput {
public static void main(String[] args) {
int Sum=0, counter = 0,no=1;
Scanner scanner;
scanner = new Scanner(System.in);
do {
System.out.println("Enter number #" + no + " = ");
boolean result = scanner.hasNextInt();
int number = scanner.nextInt();
if(result == true)
{
counter = counter + 1;
Sum = Sum + number;
no = no+1;
}
else
{
System.out.println("Invalid Input");
}
scanner.nextLine();
}while(counter<10);
System.out.println("Sum = " + Sum );
scanner.close();
}
}
答案 0 :(得分:0)
通过将其放入if
,除非知道要获取一个(即nextInt
是真的),否则您不会呼叫result
。
答案 1 :(得分:0)
如果hasNextInt()返回false,则表示扫描程序的下一个令牌(令牌=“已扫描”的对象的片段)不是整数。如果现在尽管下一个标记实际上不是Integer,则现在调用方法nextInt(),则将得到InputMismatchException。正如Scott所说,通过将调用放在if语句中,可以防止这种情况的发生,因为您可以确保下一个令牌是Integer,并且可以实际调用nextInt()。