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只是给出了执行已终止的消息,而没有给我提示。
答案 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关联。您可能需要配置它。但是如果你在命令行中运行它,它肯定会有控制台,因此它会运行没有任何问题。