2013-07-21 4 views
0

Input (белых пробелов):Как разобрать текстовый файл на две части с помощью сканера

1 1 2 3 
2 1 7 
3 3 7 
4 1 5 
5 3 6 

Я хотел бы, чтобы обработать эти входные данные как, например:

Для каждой строки в текстовом файле: : (first_element, например, 1) к переменной INT (скажем, м) и следующие (next_elements, например, 1 2 3) в ArrayList (скажем, N)

Я попытался ниже:

Scanner file_scanner = new Scanner(filename); 
    while (file_scanner.hasNextLine()) {    
    String[] line = file_scanner.nextLine().split("\\s+"); 
    String str1 = line[0]; 
    String str2 = line[1]; 

    m = Integer.parseInt(str1); 

    Scanner line_scanner = new Scanner(str2); 
    while(line_scanner.hasNext()) { 
     int n = line_scanner.nextInt(); 
     N.add(n); 
    } 
    } 

Но я не могу разобрать входные данные, как я намеревался. Любые предложения о том, как обрабатывать две части входной строки с помощью Scanner? или, даже как проверить конец текущей строки (EOL), а также как проще разбирать первый элемент?

ответ

1

попробуйте этот String[] line = file_scanner.nextLine().split("\\s+",2); в вашем коде. Он разделит каждую строку на 2 жетона.

EDIT: строка [1] будет содержать остальную часть цифр, вам не нужно будет ее снова анализировать.

+0

Спасибо большое !! это спасает мою жизнь на данный момент :) – joarderm

0

К сожалению это не может быть наиболее эффективным, так как это 4:39 утра:

Scanner s = new Scanner(file); 
    int m = 0; 
    List<Integer> list = null; 

    while(s.hasNextLine()) 
    { 
     Scanner s2 = new Scanner(s.nextLine()); 
     int count = 0; 

     list = new ArrayList<Integer>(); 
     while (s2.hasNextInt()) 
     { 

      if(count == 0) 
      { 
       m = s2.nextInt(); 
      } 
      else 
      { 
       list.add(s2.nextInt()); 
      } 
      count++; 
     } 
     System.out.println(m + " " + list); 
    } 
Смежные вопросы