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

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只是给出了执行已经终止的消息,而没有给我提示。

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() } } 

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

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

 javac ConsoleDemo.java java ConsoleDemo 

编辑 :正如此链接所示,使用System.Console并不总是在IDE中工作。 或者,您可以使用System.in

您的代码正在使用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); 

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

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

标准解决方案是从System.in表示的输入流中读取数据,以便您可以使用例如Scanner

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