2013-03-12 2 views
-1

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

for(int x = 0; ((c = br.read()) != -1) && x < w.length*w.length; x++) { 
    w.currentChar = (char) c; 
    w.row = x/w.length; 
    w.column = x%w.length; 
    w.wumpusGrid[w.row][w.column] = w.currentChar; 
    System.out.print(w.currentChar); 
    System.out.print(w.row); 
    System.out.print(w.column); 
    } 
+0

Что такое 'w'? Объект? – Makoto

+0

Ясно, что w представляет текущее состояние игры Hunt the Wumpus. :) Подробнее здесь: http://en.wikipedia.org/wiki/Hunt_the_Wumpus –

ответ

1

Ваша проблема в том, что «\ п» в конце строки считывается и присваивается в массив, вам нужно пропустить символ и сохранить счетчик скипов, Вы можете смещения для пропускаются символы:

int offset = 0; 
for(int x = 0; ((c = br.read()) != -1) && x < w.length*w.length; x++) { 
    if (c == '\n') { 
    offset++; 
    continue; 
    } 
    int pos = x - offset; 
    w.currentChar = (char) c; 
    w.row = pos/w.length; 
    w.column = pos%w.length; 
    w.wumpusGrid[w.row][w.column] = w.currentChar; 
    System.out.print(w.currentChar); 
    System.out.print(w.row); 
    System.out.print(w.column); 
} 
+0

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

0

Ваша проблема заключается в окончаниях строк ('\n' (Linux/Mac) или '\r\n' (Win)) и лечащие их в качестве символов. Вы увеличиваете x, несмотря на то, что символ был прочитан. Возьмите x++ из последней части в for и переместите его в конец корпуса петли. В начале цикла continue, если c == '\n' || c == '\r' (я думаю, оба символа вам не интересны)

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