2016-07-25 2 views
0

Я пытаюсь читать в двух строках ввода из stdin и копировать элементы первой строки в один массив, а элементы второй строки - в другой массив. Элементы в каждой строке имеют пробелы между ними, которые я использую, чтобы различать элементы. Пример ввода будет:Прочитать и разделить несколько строк от Stdin

1 2 3 
4 5 

В настоящее время 12345 хранится в одном массиве, но я хочу, чтобы результат этого:

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

Как мне это сделать?

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

Он существует ровно 2 строки , используйте массив массивов (двумерные массивы). Если количество строк является переменной, используйте ArrayList. –

+0

Я не понимаю проблему. Вы разбиваете его на два массива ... вы не очень много делаете с массивами, за исключением того, что печатаете их позади друг друга в одной строке, но вы их раскалываете. – Mark

+0

Другой способ - определить символ e (символ), который идентифицирует конец строки – RudiDudi

ответ

0

Вы должны извлечь разбор одной строки в отдельный метод:

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; 
} 

После этого, код в main выглядит проще:

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]); 
    } 
    } 
}