编辑:这个问题被标记为重复我已经搜索到了包括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赋值,它编译并运行得很好。 这就是为什么我不明白为什么我得到的错误是在“请输入您的号码”输出之前。 任何帮助将不胜感激!