这个错误消息是什么意思?我该如何解决这个问题



我最近才开始学习java,对扫描仪和一般输入非常困惑。对于这个例子,我的输出正是它需要的,但我得到了一个奇怪的错误消息,这意味着什么,我的错误是什么?

如果代码看起来非常杂乱无章,很抱歉,但这是我第一次使用这么长的代码

import java.util.*;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
String b = sc.next();
String c = sc.next();
String d = sc.next();
String e = sc.next();
String f = sc.next();
String g = sc.next();
String h = sc.next();
String i = sc.next();
String j = sc.next();
String k = sc.next();
String l = sc.next();
String m = sc.next();
String n = sc.next();
String o = sc.next();
String p = sc.next();
System.out.println(h);
System.out.println(g);
System.out.println(f);
System.out.println(e);
System.out.println(d);
System.out.println(c);
System.out.println(b);
System.out.println(a);
System.out.println(p);
System.out.println(o);
System.out.println(n);
System.out.println(m);
System.out.println(l);
System.out.println(k);
System.out.println(j);
System.out.println(i);
}
}

错误消息:

Failed test #1 of 3. Runtime error
Exception in thread "main" java.util.NoSuchElementException
at java.base/java.util.Scanner.throwFor(Scanner.java:937)
at java.base/java.util.Scanner.next(Scanner.java:1478)
at Main.main(Main.java:15)

在第1个测试(共3个测试(中,可能没有任何元素在点传递给程序。

您应该检查,在访问下一个元素之前调用hasNext()方法:

if (sc.hasNext()) {
value = sc.next();
}

来自Java官方文档:

投掷:NoSuchElementException-如果没有更多的代币可用

此异常意味着,在调用sc.next()方法时,没有可从输入中读取的Scanner值。

所以,您正在尝试读取比输入流更多的项目。Scanner具有返回boolean以指示流中是否还有要读取的内容的方法hasNext()

你可以重写你的例子,像这样:

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
System.out.println(sc.next());
}
}

此代码将读取与输入流一样多的值,并将它们打印到控制台。

最新更新