Java 尝试读取int时的InputMismatchException

Java 尝试读取int时的InputMismatchException,java,java.util.scanner,Java,Java.util.scanner,您的计划告诉我们: 输入数组元素,输入字母表以退出 然后,只要输入了int,就可以循环,并停止循环,但永远不会读取字母字符 那么你的节目告诉我们 输入要在数组中搜索的值 并直接尝试从扫描仪读取int java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at java.util.Scan

您的计划告诉我们:

输入数组元素,输入字母表以退出

然后,只要输入了
int
,就可以循环,并停止循环,但永远不会读取字母字符

那么你的节目告诉我们

输入要在数组中搜索的值

并直接尝试从扫描仪读取
int

java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at BinarySearch.main(BinarySearch.java:19)
但是输入的下一个字符仍然是字母字符,因为您从未读过它,因此出现了
inputmaschException

关于异常的文档非常清楚其原因:

由扫描程序引发,以指示检索到的令牌不存在 匹配所需类型的模式,或者标记已过期 所需类型的范围


现在如何解决这个问题

您可以简单地添加对
输入的调用。下一步
当您退出第一个读取循环以跳过字母字符时:

int value = input.nextInt();
您的计划告诉我们:

输入数组元素,输入字母表以退出

然后,只要输入了
int
,就可以循环,并停止循环,但永远不会读取字母字符

那么你的节目告诉我们

输入要在数组中搜索的值

并直接尝试从扫描仪读取
int

java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at BinarySearch.main(BinarySearch.java:19)
但是输入的下一个字符仍然是字母字符,因为您从未读过它,因此出现了
inputmaschException

关于异常的文档非常清楚其原因:

由扫描程序引发,以指示检索到的令牌不存在 匹配所需类型的模式,或者标记已过期 所需类型的范围


现在如何解决这个问题

您可以简单地添加对
输入的调用。下一步
当您退出第一个读取循环以跳过字母字符时:

int value = input.nextInt();