2016-07-02 3 views

Antwort

0

Ich werde nicht die ganze Antwort geben (es gibt Teile, die Sie sollten sich nachschlagen können), aber:

1) split() Verwenden Sie eine Eingabezeile in Felder aufzuteilen. Das Ergebnis ist ein String[].

2) Die einfachste Möglichkeit, jede String in eine int zu konvertieren, ist die Verwendung von Streams. Wenn fields die String[] ist, dann können Sie verwenden:

int[] ints = Arrays.stream(fields).mapToInt(Integer::parseInt).toArray(); 

Dies setzt voraus, es gibt keine Parsing-Fehler. Wenn Sie ungültige Eingaben ordnungsgemäß verarbeiten möchten, müssen Sie möglicherweise eine Schleife anstelle eines Streams verwenden.

Um dies zu unterbinden: Arrays.stream erstellt einen "Stream", der Ihnen alle Strings im Array gibt. mapToInt wandelt den Stream in einen IntStream (ein Stream von int; beachten Sie, dass es spezielle Stream-Typen gibt, wenn die Elemente einen primitiven Typ wie int haben). Dazu wird eine Methode Integer.parseInt angewendet, die einen String Parameter akzeptiert und eine int zurückgibt. toArray auf einem IntStream baut dann eine int[] aus dem Stream.

3) Verwenden Sie eine ArrayList<int[]>, um ein Array aller Zeilen zu halten, da Sie nicht im Voraus wissen, wie viele Zeilen es sein wird. Wenn Sie eine int[][] möchten, können Sie die ArrayList später in ein Array konvertieren.

0

Der einfachste Weg, dies zu tun ist, einen der vielen CSV-Parser zu verwenden, die Sie im Internet finden können. Beispiel: https://commons.apache.org/proper/commons-csv/

Wenn Sie es manuell tun möchten, können Sie Ihre Datei zeilenweise lesen und mit einem StringTokenizer jede Zeile in Token aufteilen, die Sie dann in den entsprechenden Java-Typ einlesen können.