Чтение 2D массива из текстового файла - PullRequest
0 голосов
/ 29 марта 2020

Я хочу прочитать из текстового файла 2D-массива, похожего на этот. Это код, который я написал. Я создаю игровое поле. Первая строка представляет размеры платы, поэтому программа должна читать только со второй строки.

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

7 7
.......
.......
....x..
....x..
....x..
...xx..
...sx.t
public class hey {
    public static void main(String[]args) {

    }

    public static  String[][] read() throws IOException {
        BufferedReader bo = new BufferedReader(new("board_01.txt"));
        int column = Integer.parseInt(bo.readLine());
        int row = Integer.parseInt(bo.readLine());
        String[][] map = new String[row][column];
        for (int i = 0; i < row; i++) {
            String line = bo.readLine();
            for (int j = 0; j < column; j++) {
                map[i][j] = String.valueOf(line.charAt(j));
            }
        } 
        bo.close();
        return map;
    }
}

1 Ответ

1 голос
/ 29 марта 2020

Это неверно:

int column = Integer.parseInt(bo.readLine());

int row = Integer.parseInt(bo.readLine());

Это пытается прочитать две строки в двух отдельных строках, но это не тот способ, которым настроен ваш файл - вместо 2-х первых строк в одной строке, первой line

Вместо этого вы должны иметь:

int column = bo.readInt();    
int row = bo.readInt();
bo.readLine();

. Вы прочитали 2 дюйма в первом ряду, а также захватили и проглотили токен конца строки, чтобы сканер перешел к следующая строка

Кроме того, ваш метод main не может быть пустым, иначе ваша программа вообще ничего не сделает.

...