【问题标题】:Why doesn't the console prompt for an input?为什么控制台不提示输入?
【发布时间】:2012-06-14 16:11:04
【问题描述】:
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 做一些事情,因为这是控制台输入通道(System.out 的倒数,您可以使用它在控制台上打印文本)
  • if(con==null) 返回;这是在不看到输出的情况下退出的唯一方法……所以检查 null 并打印出它是 null,然后你可以问下一个问题:为什么 System.console() 在 中运行时返回 null?
  • @SteveH。有什么方法可以给控制台分配一个非空值?

标签: java io console


【解决方案1】:

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

标准解决方案是从System.in 表示的输入流中读取数据,这样您就可以使用像扫描仪这样的例子

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

【讨论】:

  • 我正在使用 Eclipse IDE。有什么办法吗?
  • 我从来没有让 Eclipse 正确处理 System.console —— 不确定它是否与 javaw 或 java 有关,但在 Eclipse 本身中对我没有用。
【解决方案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()
    } 
} 

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      您的代码可以在 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);
      

      【讨论】:

        【解决方案5】:

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

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

        javac ConsoleDemo.java
        java ConsoleDemo
        

        编辑:正如this link 建议的那样,使用System.Console 在IDE 中并不总是有效。或者,您可以只使用System.in

        【讨论】:

        • 我正在使用 Eclipse IDE 进行编码和编译。
        • 在这种情况下,您的问题与this question 非常相似。看看那里。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-16
        • 2017-09-17
        • 1970-01-01
        相关资源
        最近更新 更多