Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

List of strings (multiple lines) as command line input in Java

I am trying to do an assignment for school and I don't know how to deal with the input. I have provided a link below for context on the assignment:

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

I have a general idea on how to do everything the assignment asks, but I'm unsure of how to deal with input.

A sample input is:

a0
0
a00
ab000

Which gives an output of:

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

I intend to do this with Java. My question is how do I enter multiple lines of input like in the sample into the Windows cmd.exe line when not piping in an input file? Because pressing enter would just run the program with one line of input instead of making a new line. Also, since the assignment is being marked automatically, the input can't be interactive, so how would I go about knowing when to stop reading?

Thanks.

like image 715
Jigglypuff Avatar asked May 05 '11 05:05

Jigglypuff


2 Answers

From the assignment:

You can assume that input will come from standard input in a stream that represents one string per line. In reality, the input will come from a file that is piped to standard in. Output should be sent to standard out. A sample input and output file are available.

Just read System.in and write to System.out. Since the input will be piped to stdin, you will get EOF at the end of the input file.

When interacting via the CMD window, use Ctrl-Z to indicate EOF (on Windows) or on a Linux system, use Ctrl-D

like image 188
Jim Garrison Avatar answered Oct 13 '22 11:10

Jim Garrison


If you can use System.in, then you could use an InputStreamReader that reads from a stream of System.in. Then, use a BufferedReader to get each line using readLine() method. For example, look at this code:

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.
}
like image 34
Xavier E. López Avatar answered Oct 13 '22 11:10

Xavier E. López