Java 为什么';控制台是否提示输入?

Java 为什么';控制台是否提示输入?,java,io,console,Java,Io,Console,我从书中复制了这段代码,书中说我会在屏幕上得到输入字符串的提示,但我的IDE只给出执行已终止的消息,而没有给我提示。您使用的IDE是什么?当您从命令行运行此代码时,它工作正常,因此问题显然在于IDE的配置 使用以下命令从命令行编译和运行代码: import java.io.*; public class ConsoleDemo { public static void main(String[] args) { String str; Console con; co

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

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

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

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中工作。或者,您可以只使用
系统。在
中您使用的是什么IDE?当您从命令行运行此代码时,它工作正常,因此问题显然在于IDE的配置

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

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中工作。或者,您可以只使用
System.in
这是因为您的IDE通过
javaw.exe
(无窗口->无控制台)而不是
java.exe
(带控制台窗口)命令运行此代码,所以
System.console()
返回空值

标准解决方案是从输入流中读取数据,输入流由
系统表示。在
中,您可以使用类似扫描仪的示例

javac ConsoleDemo.java
java ConsoleDemo

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

标准解决方案是从输入流中读取数据,输入流由
系统表示。在
中,您可以使用类似扫描仪的示例

javac ConsoleDemo.java
java ConsoleDemo

您的代码在Eclipse和命令提示符下工作

如果您使用的是Java5或Java,也可以尝试这种方法+

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

您的代码在Eclipse和命令提示符下工作

如果您使用的是Java5或Java,也可以尝试这种方法+

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

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

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

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和Netbeans都支持使用控制台。istty()方法将返回false,您将无法使用控制台

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

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相关联。您可能需要对其进行配置。但若您在命令行中运行它,它肯定会有控制台,所以它运行起来不会有任何问题

默认情况下,eclipse不会将控制台与JVM相关联。您可能需要对其进行配置。但若您在命令行中运行它,它肯定会有控制台,所以它运行起来不会有任何问题

如果(con==null)返回,您将需要对
System.in
执行一些操作,因为这是控制台输入通道(与
System.out
相反,您可以使用它在控制台上打印文本);这是在看不到输出的情况下退出的唯一方法。。。因此,检查null并打印出它为null,然后您可以问下一个问题:为什么System.console()在运行时返回null?@SteveH。有没有办法给控制台分配一个非空值?如果(con==null)返回,您需要使用
System.in
,因为这是控制台输入通道(与
System.out
相反,您可以使用它在控制台上打印文本);这是在看不到输出的情况下退出的唯一方法。。。因此,检查null并打印出它为null,然后您可以问下一个问题:为什么System.console()在运行时返回null?@SteveH。有没有办法给控制台分配一个非空值?我正在使用EclipseIDE进行编码和编译。请看这里。我正在使用EclipseIDE进行编码和编译。在这种情况下,您的问题非常类似于。看一看,我正在使用EclipseIDE。有什么办法吗?我从来没有让Eclipse正确地处理System.console——不确定这是与javaw还是java有关,但这在Eclipse本身中从未对我起作用。我使用的是Eclipse IDE。有什么办法吗?我从来没有让Eclipse正确地处理System.console——不确定这是与javaw还是java有关,但这在Eclipse内部对我来说从来都不起作用。