Java中的控制台

时间:2013-11-27 15:04:17

标签: java eclipse

我在java中理解控制台时遇到了一些严重的麻烦。我正在运行Eclipse,我想编写一个小程序,它向控制台提示一些文本消息,并从中接收一些字符串作为输入参数。问题是:当我运行程序时,它会正确打开命令行窗口,但我的输出只打印在Eclipse-Console上。 在某种程度上,我明白为什么会这样。命令行Windows需要命令,而不仅仅是某种字符串或其他东西。但是我如何设法将我的字符串输出到命令行窗口并从中读取字符串,而不仅仅是命令。 或者我做错了吗?我是否必须打开另一个“控制台”,我的所有消息都会被提示,我可以从中读取用户写的字符串?

这是我用来在开始时打开命令行窗口的代码:

    public static void main(String args[]) throws Exception {
    Process process = new ProcessBuilder(new String[] { "cmd", "/C",
            "start", "cmd" }).start();
    System.out.println(process.waitFor());

编辑:我仍然无法让这个工作。不知何故,当我编译程序并运行它时,它正确地打开了一个命令窗口,但没有在那里发布消息。似乎“System.out.println(”xxx“)对此窗口没有任何影响。

2 个答案:

答案 0 :(得分:2)

您的程序未指定“控制台”,但输入,输出和错误输出为stdinstdoutstderr。当您从Windows运行程序时,这些流被绑定到命令窗口,如果您在eclipse中运行它们,它们将与eclipse控制台相关联。为了给出一个更加模糊的例子,如果您通过ssh运行它,则流将与ssh相关联,ssh与您的命令窗口相关联,依此类推。

所以,你没有做错任何事情,如果你想让stdout和stdin来自那个命令窗口,你只需要从命令行运行程序。

顺便说一下,如何打开命令窗口?

答案 1 :(得分:0)

您可能需要阅读此页面:

http://pages.cs.wisc.edu/~hasti/cs368/JavaTutorial/NOTES/JavaIO_Scanner.html

基本上你需要的是创建输入流,告诉用户输入内容,然后获取输入。 E.g。

private static Scanner newScanner = new Scanner(System.in);

public static void main(String[] args) {

    System.out.println("Put your input here: ");

    String inputValue = newScanner.nextLine(); 

    System.out.println(inputValue);

}

请记住导入扫描仪库!