Как использовать список для заполнения сетки? - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь получить этот код для чтения в текстовом файле, а затем заполнить сетку 15x15 числами из файла.Что он делает, так это только заполняет сетку нулями.Я не уверен, как это исправить, но я думаю, что проблема в том, как я пытаюсь использовать list.indexOf () в цикле.

Я попытался перейти на использование list.get (i) илииспользуя j, который не сработал так, как мне нужно.

public Grid(String fileName) throws FileNotFoundException {
    //reading file using scanner
    Scanner sc = new Scanner(new File(fileName));
    //first number is the dimension for rows
    this.rows = sc.nextInt();
    //since it is square matrix second dimension is same as first
    this.cols = this.rows;
    grid = new boolean[rows][cols];

    String longNumber = sc.next();
    List<Integer> list = new ArrayList<>();
    for(char ch : longNumber.toCharArray()) {
        list.add( Integer.valueOf(String.valueOf(ch)));
    }

    for (int i = 0; i < rows; i++)
        for (int j = 0; j < cols; j++) {
            //reading from file 1 and 0 if 1 then store true else store false in grid
            if (list.indexOf(i) == 1)
                grid[i][j] = true;
            else
                grid[i][j] = false;
        }
}

Я получаю вывод, показывающий 15x15 блок 0, а не 1 и 0, которые считываются из текстового файла,Текстовый файл должен быть прочитан и отображен (вместе с количеством капель или сгустков в 1), но этого не происходит.Если вам нужен остальной код, пожалуйста, дайте мне знать.Мне необходимо прочитать в файле, который содержит int (15), который используется для создания сетки, а затем 15 строк из 1 и 0, которые должны отображаться таким же образом, когда программа работает должным образом.

1 Ответ

0 голосов
/ 02 мая 2019

Почему вы конвертируете его в List<Integer>? Вы можете просто работать с String, который вы получили из файла.

Для каждой строки вам нужно получить String, а затем для каждого из таких String вы можете сделать charAt(), чтобы проверить, что за персонаж там, и сохранить true или false в grid соответственно.

Код будет выглядеть примерно так:

this.rows = sc.nextInt();
//since it is square matrix second dimension is same as first
this.cols = this.rows;
grid = new boolean[rows][cols];

for (int i = 0; i < rows; i++) {
    String longNumber = sc.next();
    for (int j = 0; j < cols; j++) {
        //reading from file 1 and 0 if 1 then store true else store false in grid
        grid[i][j] = (longNumber.charAt(j) == 1);
    }
}

Обратите внимание, что я поместил String longNumber = sc.next() во внешний цикл.

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...