java - Scanner.hasNext() 在线编译时返回 false,但在 eclipse 上编译时返回 true

标签 java java.util.scanner nosuchelementexception

我正在尝试解决一个竞争性编码问题,当我在 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/

相关文章:

java - Maven 不会部署到 tomcat;给出 '405' 错误

java - 使用 Java 的 Net 库时如何伪造特定的浏览器客户端?

java - switch 语句中一组字符串值的输入验证

java - 使用 Java,.equalsIgnoreCase 不适用于两个词。我该如何解决?

java.util.NoSuchElementException - 扫描仪读取用户输入

java - 如何设置 jtable 内 jcombobox 的默认选定值?

java - 在 AppEngine 中安排任务

java - if else 语句没有停止问题

java - 从 CSV 文件读取到对象中

java - 使用扫描仪出现 NoSuchElementException