2011-05-05 16 views
6

Próbuję wykonać zadanie dla szkoły i nie wiem, jak sobie poradzić z danymi wejściowymi. I podajemy link poniżej dla związku o nadaniu:Lista ciągów (wiele wierszy) jako wejście linii poleceń w Javie

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

Mam ogólne pojęcie o tym, jak zrobić wszystko przypisanie prosi, ale jestem pewien, w jaki sposób radzić sobie z wejścia.

Wejście próbka:

a0
A00
ab000

co daje moc:

drzewo 1:
nieważny!
drzewo 2:
wysokość -1
długość ścieżki: 0
pełna: tak
postorder:
Drzewo 3:
wysokość: 0
długość ścieżki: 0
pełna: tak
postorder : a
Drzewo 4:
wysokość: 1
długość ścieżki: 1
kompletna: tak
postorder: ba

mam zamiar zrobić to z Java. Moje pytanie brzmi: w jaki sposób wprowadzić wiele wierszy danych wejściowych, takich jak w przykładach, do wiersza polecenia cmd.exe systemu Windows, gdy nie piszę w pliku wejściowym? Ponieważ naciśnięcie klawisza enter spowoduje uruchomienie programu z jednym wierszem wprowadzania danych zamiast tworzenia nowego wiersza. Ponadto, ponieważ przypisanie jest zaznaczane automatycznie, dane wejściowe nie mogą być interaktywne, więc jak miałbym wiedzieć, kiedy przerwać czytanie?

Dzięki.

+1

nie widać link do przypisania ... – cMinor

+0

Och przepraszam zapomniałem ustawiony na publiczny . Teraz powinno działać. – Jigglypuff

+1

+1 Dobrze napisane, konkretne pytanie. Witamy w SO. –

Odpowiedz

2

Od cesji:

Można zakładać, że wejście przyjdzie ze standardowego wejścia w strumieniu że reprezentuje jeden ciąg w wierszu. W rzeczywistości wejście będzie pochodzić z pliku , który jest podłączony do standardowego wejścia. Wyjście należy wysłać do standardowego wyjścia. Dostępny jest przykładowy plik wejściowy i wyjściowy: .

Wystarczy przeczytać System.in i napisać do System.out. Ponieważ wejście zostanie wyprowadzone na standardowe wejście, otrzymasz EOF na końcu pliku wejściowego.

Kiedy interakcji poprzez okna CMD, użyj Ctrl-Z, aby wskazać EOF (w systemie Windows) lub w systemie Linux, należy użyć Ctrl-D

+0

Dziękuję za odpowiedź. Czy istnieje również sposób, w jaki mogę wskazać EOL, więc mógłbym przekazać dane wejściowe, takie jak wejście przykładowe z wieloma liniami w oknie CMD? – Jigglypuff

+0

EOL to tylko klawisz ENTER –

1

Jeśli można użyć systemu.w, możesz użyć InputStreamReader, który czyta ze strumienia System.in. Następnie użyj BufferedReader, aby uzyskać każdą linię za pomocą metody readLine(). Na przykład, spójrz na ten kod:

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

Ten kod działa bez problemu -

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 
}