我正在努力学习Java,而我刚刚开始学习。
我想运行我在网上找到的代码:
import java.util.Scanner; // needed for Scanner
/** A Java program that demonstrates console based input and output. */
public class MyConsoleIO
{
// Create a single shared Scanner for keyboard input
private static Scanner scanner = new Scanner( System.in );
// Program execution starts here
public static void main ( String [] args )
{
// Prompt the user
System.out.print( "Type some data for the program: " );
// Read a line of text from the user.
String input = scanner.nextLine();
// Display the input back to the user.
System.out.println( "input = " + input );
} // end main method
} // end MyConsoleIO class
但是我收到了这个错误:
Type some data for the program:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at MyConsoleIO.main(MyConsoleIO.java:17)
[Finished in 0.9s with exit code 1]
我在Sublime Text 2中直接在编辑器中运行代码,按下CMD + B.
答案 0 :(得分:2)
我不确定Sublime Text,但你的程序看起来是正确的。 我在我的Netbeans 8.0.1中运行它,一切正常。 看起来这是Sublime如何运行java程序的一个问题。
尝试编译并使用标准java编译器运行它并运行工具。 有关详细信息,请阅读:http://www.oracle.com/technetwork/java/compile-136656.html
答案 1 :(得分:1)
您无法直接致电nextLine()
,您需要首先检查一条线路是否可用(用户是否已按Enter键),scanner.hasNextLine()
阻止该行,直到可以读取该线路为止。< / p>
String input ="";
if(scanner.hasNextLine()){
input=scanner.nextLine();
}
javadoc for Scanner描述了这种行为,顶部的摘要通常会为您提供使用该类所需的所有信息。
此外,如果您是初学者,通常建议使用 Thinking in Java 这本书。
答案 2 :(得分:0)
private String read(String text) {
System.out.println(text);
return read();
}
private String read() {
if (!scan.hasNext())
System.exit(0);
return scan.next();
}
使用
进行写入和扫描String string = read("Input: ");
只能阅读...
String string = read();