2015-06-01 3 views
0

У меня есть небольшая проблема с преобразованием строки, которую я читаю из файла, в многомерный массив int, который нашел то, что я считаю, предложениями here.Преобразование строки в многомерный массив int

Посмотрите этот файл here для содержимого строки.

По существу, я хотел бы заменить CR и LF так, чтобы создать многомерный массив int.

Согласно моему коду ниже, где я могу ошибиться?

public static void fileRead(String fileContent) { 
    String[] items = fileContent.replaceAll("\\r", " ").replaceAll("\\n", " ").split(" "); 

    int[] results = new int[items.length]; 

    for (int i = 0; i < items.length; i++) { 
     try { 
      results[i] = Integer.parseInt(items[i]); 

      System.out.println(results[i]); 
     } catch (NumberFormatException nfe) {}; 
    } 
} 

EDIT: У меня нет никаких ошибок. Вышеупомянутая логика создает только массив int размером 2, т. Е. Результаты [0] = 5 и результаты [1] = 5

Спасибо за любые предложения.

+0

Вы должны четко объяснить, какие ошибки вы видите. Кроме того, почему вы делаете 'replaceAll (" \\ r "," ")' дважды? Вы имели в виду, что один из них был '\\ n'? – Nashenas

+0

Вы можете посмотреть эту ссылку - http://stackoverflow.com/questions/22185683/read-txt-file-into-2d-array – Razib

+0

@Nashenas: Спасибо, но я не встречаю никаких ошибок. Вышеупомянутая логика только создает массив int размером два, т. Е. Результаты [0] = 5 и результаты [1] = 5 – ANM

ответ

1

Вот Java 8 Решение:

private static final Pattern WHITESPACE = Pattern.compile("\\s+"); 

public static int[][] convert(BufferedReader reader) { 
    return reader.lines() 
      .map(line -> WHITESPACE.splitAsStream(line) 
        .mapToInt(Integer::parseInt).toArray()) 
      .toArray(int[][]::new); 
} 

Использование (конечно, вы можете прочитать из файла, а):

int[][] array = convert(new BufferedReader(new StringReader("1 2 3\n4 5 6\n7 8 9"))); 
System.out.println(Arrays.deepToString(array)); // [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 
Смежные вопросы