2017-12-06 1 views
0

Wie gehe ich über die Eingabe nehmen, die mehrere Zeilen ist, wieJava Taking mehrzeilige Eingabe

4 2 9 
1 4 2 
9 8 5 

und es in ein Array Platzierung von so groß genug ist, um jede Zeile ohne leere Positionen zu halten, oder eine Arraylist. Ich habe viele Möglichkeiten ausprobiert und kann keine Lösung finden. Zum Beispiel, wenn der Benutzer kopiert und das obige Snippet als Eingabe eingefügt, möchte ich ein Array oder Arraylist

["4 2 9", "1 4 2", "9 8 5"] 
+2

@OP: _I've viele Möglichkeiten versucht, dies zu tun ..._ uns Ihre Testcode anzeigen. –

+0

Verwenden Sie 'Arraylist' –

Antwort

0

Versuchen nextLine

Scanner s = new Scanner(System.in); 
ArrayList<String> list = new ArrayList<>(); 
while (s.hasNextLine()) { 
    list.add(s.nextLine()); 
} 

System.out.println(list); 

Hinweis Aufruf, dass der Scanner zur Eingabe auffordert halten. Um dies zu beenden, müssen Sie ein Zeilenendezeichen eingeben. Sehen Sie dies answer für wie dies zu tun ist.

Beispiel Eingabe/Ausgabe:

4 2 9 
1 4 2 
9 8 5 
^D 
[4 2 9, 1 4 2, 9 8 5] 
+0

Das funktioniert, aber gibt es einen Weg, ich kann es tun, wo der Benutzer das Programm nicht manuell beenden muss? Ich möchte, dass der Compiler selbst weiß, wenn keine Eingabe mehr erfolgt. Wenn es keinen Weg gibt, dann ist das in Ordnung, danke –

+0

Es gibt keine Möglichkeit, das zu tun, fürchte ich. @HarunFeraidon – Sweeper

0

versuchen, dies zu halten: kann

List<String> list = new ArrayList<String>(); 
while((str = in.readLine()) != null){ 
list.add(str); 
} 
+0

While-Schleife wird nie beendet und ständig nach neuen Zeilen –

0

Sie Scanner die Eingabe zu lesen verwenden aus Konsole.

versuchen, etwas wie folgt aus:

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    List<String> list = new ArrayList<String>(); 

    while(scan.hasNextLine()) { 
     String str = scan.nextLine(); 
     System.out.println(str); 
     list.add(str); 
    } 

    System.out.println(java.util.Arrays.toString(list.toArray())); 

    scan.close(); 
} 
+0

So wird die While-Schleife nie beendet, da scan.nextLine() immer nach Eingabe sucht –

+0

@HarunFeraidon: Es gibt keinen anderen Weg, es zu tun. Wenn Sie die Anzahl der Zeilen kennen, die Sie lesen, können Sie die Schleife für eine bestimmte Zeit manuell durchführen. – Parth