为什么控制台没有提示输入?

时间:2012-06-11 18:20:44

标签: java io console

import java.io.*;

public class ConsoleDemo {

public static void main(String[] args) {
    String str;
    Console con;

    con = System.console();

    if (con == null)
        return;

    str = con.readLine("Enter a string :    ");
    con.printf("Here is your string %s", str);
  }
}

我从书中复制了这段代码,其中说我会在屏幕上提示输入字符串,但我的IDE只是给出了执行已终止的消息,而没有给我提示。

5 个答案:

答案 0 :(得分:2)

Eclipse和Netbeans都支持使用Console。 Console.istty()方法将返回false,您将无法使用控制台。

您可以将代码更改为以下内容并获得相同的结果,并且可以在IDE中运行它。

import java.io.*; 

public class ConsoleDemo { 

    public static void main(String[] args) { 
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter a String and press enter");
        System.out.println("You entered the String: " + scan.nextLine()
    } 
} 

答案 1 :(得分:1)

您使用的是什么IDE?当您从命令行运行它时,此代码工作正常,因此问题显然在于IDE的配置。

使用以下命令从命令行编译和运行代码:

javac ConsoleDemo.java
java ConsoleDemo

修改:正如this link所示,使用System.Console并不总是在IDE中有效。或者,您可以使用System.in

答案 2 :(得分:1)

您的代码正在使用Eclipse和命令提示符。

如果您使用的是Java 5或+

,请尝试这种方式
Scanner in = new Scanner(System.in);
System.out.print("Enter a String : ");
String string = in.nextLine();
System.out.println("Here is your String : " + string);

答案 3 :(得分:0)

这是因为您的IDE通过javaw.exe(无窗口 - >无控制台)而非java.exe(带控制台窗口)命令运行此代码,因此System.console()返回null。

标准解决方案是从输入流中读取数据,该数据由System.in表示,因此您可以使用扫描程序,例如

Scanner keybord = new Scanner(System.in);
String line = keybord.readLine();

答案 4 :(得分:0)

默认情况下,eclipse不会将控制台与JVM关联。您可能需要配置它。但是如果你在命令行中运行它,它肯定会有控制台,因此它会运行没有任何问题。