2015-04-18 2 views
0

Так что просто быстрый вопрос здесь, я проделал определенную работу с чтением файлов, но недостаточно для того, чтобы быть опытным с ним. У меня есть сетка:Импорт чисел из сетки в 2D-массив Java

10 14 81 34 76 

18 22 64 4 87 

1 6 42 13 15 

4 32 21 87 31 

7 42 24 20 15 

(только пример сетки)

У меня есть в текстовом файле в настоящее время. Как я могу ввести каждый номер в свое место в 2D-массиве, кажется простым, но с моими ограниченными знаниями я не смог этого сделать!

+3

Можете ли вы показать нам, что у вас есть, и спросить конкретно, что не работает в вашей попытке? – Turing85

+0

Я просто не совсем уверен, как это сделать, я знаю, как делать базовый ввод из файлов и писать им, но я только разграничивал один раз. – WilliamJestes

+1

1. Прочитайте каждую строку файла в ArrayList. 2. Напишите функцию, которая берет строку и возвращает ArrayList из целых чисел, разбивая String на пробелы и преобразуя каждый элемент в Integer. 3. Используйте свою функцию, чтобы поместить каждую строку в ArrayList из ArrayLists. –

ответ

1

Предположим сначала, что знаете размер. первым шагом является чтение файлов. создать bufferreader

BufferedReader br=new BufferedReader(new FileReader(path)); 

Затем цикл через этот читатель

int[][] result=new int[rownum][columnnum]; 
int i =0; 
While(br.ready()){ 
    String line=br.readline(); 
    String[] tokens=line.split(" "); 
    // now put each in 2D array 
    for(int j=0;j<tokens.length;j++){ 
     result[i][j]=Integer.parseInt(tokens[j]); 
    } 
    i ++; 
} 

Если вы не знаете размер, то в этом цикле вы положили в ArrayList. Затем используйте метод toArray

+0

Я получаю сообщение об ошибке со строкой line = br.readline(); говоря, что метод readline() не определен для буферизованного считывателя типа. – WilliamJestes

+0

@WilliamJestes use readLine() – Evilsanta

+0

Когда я делаю это, я получаю: Unhandled Тип исключения IOException – WilliamJestes

1

Ну, это довольно логично.

Давайте Разбивка вашей сетка,

  1. Это пространство разграничено
  2. Рассмотрят каждую строку, чтобы быть рядом 2D-массив.

Вот код,

File file = new File("test.txt"); 
    FileReader fileReader = new FileReader(file); 
    BufferedReader bufferedReader = new BufferedReader(fileReader); 
    ArrayList<String> lines = new ArrayList<String>(); 
    String line; 
    while ((line = bufferedReader.readLine()) != null) { 
     lines.add(line); 
    } 
    fileReader.close(); 

Теперь ArrayList линии есть все строки из текстового файла. Все, что вам нужно сделать сейчас, это перебрать его с помощью простого цикла и извлечь значения.

String [] singleline = lines.get(0).split(" "); // this array contains all integers at line 0 . 
ArrayList<Integer> singleLineIntegers = new ArrayList<Integer>(); 
for(i=0;i<temp.length;i++) 
singleLineIntegers.add(Integer.parseInt(temp[i])); 

Сейчас этот массив singleLineIntegers Содержит все целые числа в строке 1, используйте массив строк, чтобы повторить это и вставить его в 2d массив.

Смежные вопросы