Java与Sublime Text - 扫描仪无法正常工作?

时间:2015-03-28 21:03:13

标签: java java.util.scanner sublimetext

我正在努力学习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.

3 个答案:

答案 0 :(得分:2)

我不确定Sublime Text,但你的程序看起来是正确的。 我在我的Netbeans 8.0.1中运行它,一切正常。 看起来这是Sublime如何运行java程序的一个问题。

尝试编译并使用标准java编译器运行它并运行工具。 有关详细信息,请阅读:http://www.oracle.com/technetwork/java/compile-136656.html

另见: https://stackoverflow.com/a/14810204/1981450

答案 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();