作为Java命令行输入的字符串列表(多行)

时间:2011-05-05 05:15:38

标签: java command-line input binary-tree

我正在尝试为学校做作业,我不知道如何处理输入。我在下面提供了一个关于作业背景的链接:

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

我对如何完成作业所要求的一切有一个大概的想法,但我不确定如何处理输入。

示例输入是:

  

A0
  0
  A00
  ab000

其输出为:

  

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

我打算用Java做这件事。我的问题是,如果没有在输入文件中输入管道,如何将样本中的多行输入输入Windows cmd.exe行?因为按Enter键只会使用一行输入来运行程序,而不是创建一个新行。此外,由于分配是自动标记的,输入不能是交互式的,那么我如何知道何时停止阅读呢?

感谢。

3 个答案:

答案 0 :(得分:2)

来自作业:

  

您可以假设输入将会到来   来自流中的标准输入   每行代表一个字符串。在   现实,输入将来自一个   传送到标准的文件。   输出应发送到标准输出。   样本输入和输出文件是   可用。

只需阅读System.in并写入System.out即可。由于输入将通过管道输出到标准输入,因此您将在输入文件的末尾获得EOF。

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

答案 1 :(得分:1)

如果可以使用System.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.
}

答案 2 :(得分: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
}