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

6
我在尝试完成一个学校作业,但不知道如何处理输入。以下提供了有关该作业的上下文链接:https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0B1DkmkmuB-leNDVmMDU0MDgtYmQzNC00OTdkLTgxMDEtZTkxZWQyYjM4OTI1&hl=en
我大致了解如何完成作业中要求的所有内容,但不确定如何处理输入。样例输入如下:
a0 0 a00 ab000
输出结果为:
Tree 1: Invalid! Tree 2: height: -1 path length: 0 complete: yes postorder: Tree 3: height: 0 path length: 0 complete: yes postorder: a Tree 4: height: 1 path length: 1 complete: yes postorder: ba
我打算使用Java来完成这个作业。我的问题是,当没有输入文件时,我如何在Windows cmd.exe行中输入多行类似于示例中的输入?因为按Enter键只会运行带有一行输入的程序,而不是创建新行。此外,由于该作业是自动评分的,因此输入不能是交互式的。那么我如何知道何时停止读取?
谢谢。

1
无法看到作业链接... - edgarmtze
哦,抱歉忘记设置为公共的了。现在应该可以工作了。 - Jigglypuff
1
+1 写得很好,问题具体明确。欢迎来到 SO。 - Jim Garrison
1
请务必使用作业标签。 - trashgod
3个回答

2

任务要求:

假设输入是来自标准输入的流,每行代表一个字符串。实际上,输入将来自通过管道传递给标准输入的文件。输出应该发送到标准输出。提供了一个样例输入和输出文件。

只需读取System.in并写入System.out即可。由于输入将被管道传递到stdin,因此您将在输入文件末尾获得EOF(文件结束符)。

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


谢谢您的回答。我是否还可以指示EOL,以便我可以通过CMD窗口传递类似于多行样本输入的输入? - Jigglypuff

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
}

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.
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接