Scanner#nextDouble在联机编译器中抛出java.util.NoSuchElementException

时间:2017-02-03 18:49:50

标签: java java.util.scanner nosuchelementexception

编辑:这个问题被标记为重复我已经搜索到了包括StachOverflow在内的任何地方。我遇到了许多无法解决此问题的答案。我遇到的唯一答案是

Scanner.hasNext();

虽然这给了我一个“假”输出,但它仍然无法解决问题。由于我之前没有为double赋值,我不知道为什么它没有“有下一个”

最终编辑: 我认为我不能接受Mouad EL Fakir的回答,因为有几个人将这个副本标记为副本(我认为不是这样)但是已在下面回答:

  

大多数在线编译器不支持“stdin”,因此它们为您提供了一些在运行程序之前输入输入的方法,请查看此示例:ideone.com/lFBn2N - Mouad EL Fakir

我正在尝试编译昨天在Eclipse中运行良好的程序。然而,在我出去的空闲时间,我想我会使用公共计算机练习使用在线编译器。到目前为止,我已经尝试了3种不同的在线编译器,它们都使用不同版本的代码提供相同的错误。

    import java.util.Scanner;

    class practice{
      public static void main(String args[]){

        Scanner ui = new Scanner(System.in); // ui = "UserInput"
        double i;    
        System.out.println("Please enter your number: ");
        i = ui.nextDouble();
        System.out.print("Your entered number is: ");
        System.out.println(i);
        }
    }

这是一个简单的代码,它可以编译。我得到的问题是它执行编译时:

"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.nextDouble(Scanner.java:2413)
    at practice.main(file.java:9)
Please enter your number:"

令我困惑的是,如果我发表评论

i = ui.nextDouble();

并为i赋值,它编译并运行得很好。 这就是为什么我不明白为什么我得到的错误是在“请输入您的号码”输出之前。 任何帮助将不胜感激!

0 个答案:

没有答案