2011-05-05 130 views
6

我想为学校做一个任务,我不知道如何处理输入。我已经为上下文提供的以下链接分配:在Java中作为命令行输入的字符串(多行)列表

https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1DkmkmuB-leNDVmMDU0MDgtYmQzNC00OTdkLTgxMDEtZTkxZWQyYjM4OTI1&hl=en

我对如何做的一切作业要求的一般概念,但我不确定如何处理输入。

样品输入是:

A0
A00
ab000

其中给出的输出:

树1:
无效!
树2:
高度:-1
路径长度:0
完整:是
后序:
树3:
高度:0
路径长度:0
完整:是
后序:a
树4:
身高:1
路径长度:1
complete:是
postorder:ba

我打算用Java来做这件事。我的问题是,如何在不输入输入文件的情况下将输入的多行输入到Windows cmd.exe行中?因为按下enter键只会用一行输入来运行程序,而不是换行。另外,由于作业是自动标记的,输入不能互动,所以我该如何去了解何时停止阅读?

谢谢。

+1

无法看到链接的作业... – cMinor 2011-05-05 05:21:41

+0

哦对不起忘了设置为公开。它现在应该工作。 – Jigglypuff 2011-05-05 05:22:51

+1

+1写得很好,具体的问题。欢迎来到SO。 – 2011-05-05 05:31:26

回答

2

从分配:

你可以假定输入将以流来 从标准输入该 代表每行一个字符串。在 的现实中,输入将来自 文件,该文件被传送到标准英寸 输出应发送到标准输出。 示例输入和输出文件是 可用。

只读System.in并写入System.out。由于输入将被传送到标准输入,您将在输入文件的末尾获得EOF。

当通过CMD窗口交互,使用Ctrl-Z,指示EOF(在Windows上)或Linux系统上,使用Ctrl-d

+0

谢谢你的回答。是否还有一种方法可以指示EOL,因此我可以通过CMD窗口将类似于示例输入的输入与多行一起传递? – Jigglypuff 2011-05-05 05:42:19

+0

EOL只是ENTER键 – 2011-05-05 15:56:02

1

如果你可以使用系统。in,那么你可以使用从System.in流中读取的InputStreamReader。然后,使用BufferedReader来使用readLine()方法获取每一行。例如,看一下这个代码:

InputStreamReader input = new InputStreamReader(System.in) 
BufferedReader reader = new BufferedReader(input); 
while (reader.readLine()) { 
//Your code here. It will finish when the reader finds an EOL. 
} 
1

此代码将不会有任何问题的工作 -

Scanner sc = new Scanner(System.in); 
String bitstring=""; 
while(sc.hasNextLine()){ //until no other inputs to proceed    
    bitstring=sc.nextLine();//save it to the bitstring 
//proceed with your other codes 
}