2016-05-11 12 views
0

Wie kann ich in einer Zeile ganze Zahlen gleichzeitig lesen, bevor ich zum nächsten übergehe?Lies (von std in) eine Liste von Ganzzahlen/Ints in verschiedenen Zeilen Java

Ich Eingang wie unten Empfangen (ignorieren Aufzählungspunkte):

  • 4 -space- - platz- 2 - platz- - platz- - platz- 3
  • -space- 84 -Raum -space- 6
  • 2 -space- -space- -space- 8 -space- -space- 19

wo für jede Reihe von ganzen Zahlen I will nur Operationen auf auszuführen diese Zeile. Dann möchte ich die nächste Zeile holen und Operationen an dieser ausführen und so weiter.

Ich weiß nicht, wie viele Leerzeichen zwischen den Zahlen sind, und ich verwende derzeit Java-Scanner.

+0

meinst du nur gelesen, bis die ganze Zahl? –

Antwort

1

Es könnte einen besseren Weg geben und ein möglicher Weg könnte sein, die ganze Zeile als einzelne Zeichenfolge zu lesen und dann jede auf Leerzeichen zu zerlegen. Diese werden jedoch string sein und Sie müssen es in Integer ändern.

Scanner scanner = new Scanner(System.in); 
String str = scanner.nextLine(); 
String[] splitStr = str.split(" "); 

for(String s: splitStr) 
    System.out.println(s); 
+0

Danke! Ich habe das benutzt und mein Programm funktioniert jetzt :) – redpanda12

0

Ich würde dies mit der nextLine() Funktion und ein StringTokenizer Objekt, zusammen mit einem ArrayList<Integer[]> die Textzeilen zu speichern:

Scanner sc = new Scanner(/*input source*/); 
StringTokenizer input; 
ArrayList<Integer[]> numbers = new ArrayList<>(); 

try { 
    while (sc.hasNextLine()) { 
     input = new StringTokenizer(sc.nextLine()); 
     Integer[] n = new Integer[input.countTokens()]; 
     for (int i=0; i<n.length; i++) { 
      n[x] = new Integer(input.nextToken()); 
     } 
     numbers.add(n); 
    } 
} catch (NumberFormatException ex) { 
    // do whatever you want here to handle non-integer input 
} 

Dadurch wird jede einzelne Zeile in eine separate Integer Array konvertieren, wobei jedes Array in einem ArrayList gespeichert wird. Alternativ können Sie auch ArrayList<String> verwenden und die Ganzzahlwerte an anderer Stelle im Code analysieren.

Auch für eine Notiz auf dem Teil sollten Sie dies nicht verwenden, wenn Ihre Scanner von System.in liest, da dies zu einer Endlosschleife führen wird. Wenn Ihr Scanner von System.in liest, sollten Sie entweder a) den Benutzer einen bestimmten Befehl eingeben, um die Schleife zu beenden, oder b) eine for Schleife verwenden, so dass eine feste Anzahl von Eingabezeilen benötigt wird.