在Geeksforgeks上运行时,java.util.InputMismatchException在本地运行良好
尝试使用与预期模式或类型不匹配的文本扫描程序类检索令牌时,会引发在Geeksforgeks上运行时,java.util.InputMismatchException在本地运行良好,java,Java,尝试使用与预期模式或类型不匹配的文本扫描程序类检索令牌时,会引发InputMismatchException。请检查输入 Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:864) at java.util.Scanner.next(Scanner.java:1485) at java.util.Scanner.nex
InputMismatchException
。请检查输入
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at GFG.main(File.java:13)
试试上面的代码next()
和nextLine()
有区别。我不知道你的意见是什么,但试试看。
.
InputMismatchException
表示输入值与next***
的类型不匹配。您输入的值我猜在引发此错误的情况下,当您为字符串唱歌时,会提供空字符串或仅包含空格的字符串。这将导致next()
忽略它(因为空格是分隔符,该方法返回标记-由分隔符分隔的部分),并等待非分隔符字符。因为next()
将为nextInt()
消耗值,但是nextInt()
调用将尝试为nextFloat()
消耗值,这可能会导致异常。下面是@Pshemo的评论:最好将扫描程序代码包装在try中。。。catch
,获取原始输入字符串,对其进行修剪,如果字符串为空,则抛出一个InvalidArgumentException
。@这里的问题是next()将不接受空字符串。
。若应用程序能够接受它,OP将需要使用nextLine
。它还需要处理在中描述的问题,但这看起来是正确的方法。虽然这是正确的方向,但它将始终返回空字符串(至少在代码中没有其他机会的情况下)。看见
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at GFG.main(File.java:13)
System.out.println("Enter a String value");
s=obj.nextLine();