我正在尝试解决一个竞争性编码问题,当我在 eclipse 或命令提示符上执行它时,它工作正常,但是当我将解决方案上传到网站上时,它没有执行,并在所在行抛出 noSuchElementException我首先接受了用户的输入。 我已经添加了导致问题的代码部分。
我尝试在具有 java 8 编译器版本的不同在线编译器上执行它,但它仍然抛出相同的错误。 我也尝试过使用 BufferedReader,但由于某种原因,代码将 k 的值打印为 -1。
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
if(!sc.hasNext()){
System.out.println("hasNext returns false");
}
int k=sc.nextInt();
System.out.println(k);
}
}
输出:
hasNext returns false
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
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 Solution.main(Solution.java:9)
最佳答案
在这里,您正在检查 sc.hasNext() ,它将打印“hasNext returns false”,但在此之后,您将再次获得 nextInt() ,但它不会出现,因为在在线编译器中,您无法在运行时传递参数.
试试这个,
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
if(!sc.hasNext()){
System.out.println("hasNext returns false");
} else {
int k=sc.nextInt();
System.out.println(k);
}
}
关于java - Scanner.hasNext() 在线编译时返回 false,但在 eclipse 上编译时返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57007598/