我在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“)对此窗口没有任何影响。
答案 0 :(得分:2)
您的程序未指定“控制台”,但输入,输出和错误输出为stdin
,stdout
和stderr
。当您从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);
}
请记住导入扫描仪库!