为什么控制台没有提示输入?
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();