我是最近才开始学习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)
答案 0 :(得分:2)
在3的测试#1中,也许没有任何元素在那个点传递给您的程序。
在访问 next 元素之前,应检查,调用hasNext()
方法:
if (sc.hasNext()) {
value = sc.next();
}
来自官方Java documentation:
抛出: NoSuchElementException-如果没有更多令牌可用
答案 1 :(得分:0)
此异常意味着,调用Scanner
方法时,无法从输入中读取sc.next()
的值。
因此,您尝试阅读的内容比输入流还多。
Scanner
的方法hasNext()
返回boolean
,以指示流中是否还有要读取的内容。
您可以像这样重写示例:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
System.out.println(sc.next());
}
}
此代码将读取与输入流一样多的值,并将它们打印到控制台。