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

4

5 回答 5

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()
    } 
} 
于 2012-06-11T19:07:57.323 回答
1

你用的是什么IDE?当您从命令行运行此代码时,它工作得很好,所以问题显然出在您的 IDE 的配置上。

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

javac ConsoleDemo.java
java ConsoleDemo

编辑:正如这个链接所暗示的,System.Console在 IDE 中使用并不总是有效。或者,您可以只使用System.in.

于 2012-06-11T18:25:49.163 回答
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);
于 2012-06-11T18:58:24.453 回答
0

这是因为您的 IDE 通过javaw.exe(windowless -> no console) 而不是java.exe(with console window) 命令运行此代码,因此System.console()返回 null。

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

Scanner keybord = new Scanner(System.in);
String line = keybord.readLine();
于 2012-06-11T18:29:38.423 回答
0

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

于 2012-06-11T19:38:26.117 回答