2014-09-25 4 views
0

У меня есть текстовый файл размером 32x32. Например, первые две строки:Чтение массива 2d из файла в java

11111111111111111111111111111111 
11111111111111111111111111111000 
... 

Я хочу прочитать и сохранить этот файл в 2D массиве. Я имею следующий java-код, но не могу точно понять, как читать данные файла. Наверное, мне понадобится два вложенных цикла?

public static int[][] readFile(){ 
BufferedReader br = null; 
int[][] matrix = new int[32][32]; 
try { 

    String thisLine; 
    int count = 0; 


    br = new BufferedReader(new FileReader("C:\\input.txt")); 

    while ((thisLine = br.readLine()) != null) { 

    //two nested for loops here? not sure how to actually read the data 

    count++; 
    } 
    return matrix;      


} 
catch (IOException e) { 
    e.printStackTrace(); 
} 
finally { 
    try { 
     if (br != null)br.close(); 
     } 
    catch (IOException ex) 
     { 
     ex.printStackTrace(); 
     } 
} 
return matrix; 
} 
+2

Это просто: как вы преобразовываете строку цифр в массив целых чисел? – Dici

ответ

3

Если предположить, что каждая строка в файле является строка, и для каждой строки, символ является запись:

// ... 
int i,j; 
i = 0; 
while((thisLine = br.readLine()) != null) { 
    for(j = 0; j < thisLine.lenght(); j++) { 
     matrix[i][j] = Character.getNumericValue(thisLine.charAt(j)); 
    } 
    i++; 
} 
// ... 

Это всего лишь отправная точка ... может быть много более эффективные и чистые способы сделать это, но теперь у вас есть идея.

1

Вам нужен только один цикл, поскольку цикл while, который у вас уже есть, функционирует как внешний цикл.

while ((thisLine = br.readLine()) != null) { 
    for(int i = 0; i < thisLine.length(); i++){ 
     matrix[count][i] = Character.getNumericValue(thisLine.charAt(i));; 
    } 

count++; 
} 
+0

Идентично к моему ответу;) – Barranka

+1

hah, да. простая проблема -> простое решение – Mshnik

+0

Получил это спасибо ... И написать 2D-массив обратно в файл, я просто изменил его с BufferedReader на BufferedWriter? – user3247171

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