scanner.nextInt() 返回 java.util.NoSuchElementException

Posted

技术标签:

【中文标题】scanner.nextInt() 返回 java.util.NoSuchElementException【英文标题】:scanner.nextInt() returns java.util.NoSuchElementException 【发布时间】:2011-05-24 08:52:34 【问题描述】:

这是我的代码,它应该接受用户的输入并设置 2 个 int 值。 exit 函数可以正常工作,但是当输入字符串为“5 2”时,它将 x 设置为 5,并在 y = s2.nextInt(); 处抛出 java.util.NoSuchElementException;行,即使有下一个 int。在我看到的 nextInt() 示例中,整数被空格分隔,扫描仪仍然拾取所有整数。我的有什么遗漏吗?

String exit = "-1";
Scanner s1 = new Scanner(System.in);
String input = s1.next();
Scanner s2 = new Scanner(input);
if (input.equals(exit))
    Sequence.quit();
else   
    x = s2.nextInt();
    y = s2.nextInt();

【问题讨论】:

【参考方案1】:

如果您打印出您的变量ìnput,您将看到它只包含“5” - 因为s1.next() 将停在空格处。

类似这样的:

String exit = "-1";
Scanner s1 = new Scanner(System.in);
int x  = s1.nextInt();
if (x==-1) 
    Sequence.quit();
else   
    y = s1.nextInt();

【讨论】:

我明白了。我滚动浏览了 Scanner 类,发现更改 input = s2.next();输入 = s2.nextLine();解决了问题

以上是关于scanner.nextInt() 返回 java.util.NoSuchElementException的主要内容,如果未能解决你的问题,请参考以下文章

我在Scanner.nextInt()之后输入一个Scanner.nextLine()来使用新行,但它不能正常工作[重复]

HDU 2075: A|B? (in Java)

scanner.nextInt()与scanner.nextDouble

1586=计算组合数-java代码

循环入门遇到的小问题.(java)

HDU 2084: 数塔(in Java)