Java 线程“中输入错误异常时出错”;“主要”;
如果我输入Java 线程“中输入错误异常时出错”;“主要”;,java,Java,如果我输入int number=scanner.nextInt(),就会出现问题并写入错误的输入,则工作正常 但是如果我没有在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
int number=scanner.nextInt(),就会出现问题如果
括号中有code>并写入错误的输入,则工作正常
但是如果我没有在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();
}
}
import java.util.Scanner;
公共类用户输入{
公共静态void main(字符串[]args){
整数和=0,计数器=0,否=1;
扫描仪;
扫描仪=新扫描仪(System.in);
做{
System.out.println(“输入数字#“+no+”=”);
布尔结果=scanner.hasNextInt();
int number=scanner.nextInt();
如果(结果==真)
{
计数器=计数器+1;
总和=总和+数字;
no=no+1;
}
其他的
{
System.out.println(“无效输入”);
}
scanner.nextLine();
}当(通过将其放入if
中进行计数器时,除非您知道要获取一个标记(即结果
为true),否则不调用nextInt
。如果hasNextInt()返回false,则意味着扫描器的下一个标记(标记=被“扫描”的对象的片段)不是整数。如果您现在调用方法nextInt()虽然下一个标记实际上不是整数,但您会得到InputMismatchException。正如Scott所说,通过将调用放在if语句中,您可以防止这种情况发生,因为您确保下一个标记是整数,并且您可以实际调用nextInt()。您是说如果hasnextInt()如果hasNextInt()
返回false,则不应该得到int
。不要像描述错误的输入那样描述您的输入。只要告诉它是什么就行了!