2016-07-25 19 views
0

Ich versuche in zwei Zeilen der Eingabe von Stdin zu lesen, und kopieren Sie die Elemente der ersten Zeile in ein Array und die Elemente der zweiten Zeile in ein anderes Array. Die Elemente in jeder Zeile haben Leerzeichen zwischen ihnen, mit denen ich zwischen den Elementen unterscheiden kann. Ein Beispiel für die Eingabe wäre:Lesen und teilen mehrere Zeilen von Stdin

1 2 3 
4 5 

Im Moment 12345 in einem Array gespeichert ist, aber ich möchte das Ergebnis dieser sein: Das

arr1 = [1, 2, 3]; 
arr2 = [4, 5]; 

Wie würde ich tun?

import java.util.*; 

public class Tester { 

    public static void main (String[] args) { 

    Scanner input = new Scanner(System.in); 
    System.out.println("Enter lines:"); 

    while(input.hasNext()) { 

     String s = input.nextLine(); 
     String[] strArray = s.split(" "); 

     int[] intArray = new int[strArray.length]; 

     for(int i = 0; i < strArray.length; i++) { 
     intArray[i] = Integer.parseInt(strArray[i]); 
     System.out.print(intArray[i]); 
     } 
    } 
} 
+0

Es gibt genau zwei Zeilen , verwende ein Array von Arrays (zweidimensionale Arrays). Wenn die Anzahl der Zeilen variabel ist, verwenden Sie eine ArrayList. –

+0

Ich verstehe das Problem nicht. Sie teilen es in zwei Arrays auf ... Sie tun nicht viel mit den Arrays, außer sie hintereinander in derselben Zeile zu drucken, aber Sie teilen sie auf. – Mark

+0

ein anderer Weg ist definieren e-Symbol (ein Zeichen), die das Ende der Zeile identifizieren – RudiDudi

Antwort

0

Sie sollten die Analyse einer einzelnen Zeile in eine separate Methode extrahieren:

private static int[] parseInts(String s) { 
    String[] strArray = s.split(" "); 

    int[] intArray = new int[strArray.length]; 

    for(int i = 0; i < strArray.length; i++) { 
    intArray[i] = Integer.parseInt(strArray[i]); 
    } 
    return intArray; 
} 

Danach sieht der Code in main einfacher:

public static void main (String[] args) { 

    Scanner input = new Scanner(System.in); 
    System.out.println("Enter lines:"); 

    int[] line1Numbers = parseInts(input.nextLine()); 
    int[] line2Numbers = parseInts(input.nextLine()); 

    // For the remaining lines: 
    while(input.hasNext()) { 
    String line = input.nextLine(); 
    int[] numbers = parseInts(line); 

    for(int i = 0; i < strArray.length; i++) { 
     System.out.print(intArray[i]); 
    } 
    } 
}