Попытка напечатать 2d массив в стиле судоку - PullRequest
0 голосов
/ 06 февраля 2019

Итак, я пытаюсь сделать метод show () для класса судоку.который использует (9x9) 2d массив.этот метод показывает печать массива в стиле судоку, но я не уверен, как это реализоватьЯ был бы очень признателен за помощь.

Я уже пробовал некоторые «циклы for», но, как я уже сказал, я не знаю, как разделить массив на квадраты 3x3.Я включил небольшую часть кода.

public void show ()

{ 
    for(int[]row : values)
    {
        for(int value : row)
        {
            System.out.print(value);
            System.out.print("\t");
        }
        System.out.println();
    }
}

вывод, который мне нужен, может быть примерно таким

0 00 |0 0 0 |0 0 0

0 0 0 |0 0 0 |0 0 0

0 0 0 |0 0 0 |0 0 0


0 0 0 |0 0 0 |0 0 0

0 0 0 |0 0 0 |0 0 0

0 0 0 |0 0 0 |0 0 0


0 0 0 |0 0 0 |0 0 0

0 0 0 |0 0 0 |0 0 0

0 0 0 |0 0 0 |0 0 0

токовый выход:

0 0 0 8 5 9 3 0 0
5 0 4 3 2 0 8 0 0
0 0 3 0 0 7 0 90
0 4 5 1 0 0 0 0 0
2 7 8 0 0 0 9 1 6
0 0 0 0 0 8 4 2 0
0 3 0 6 0 0 2 0 0
0 0 1 0 9 3 6 0 7
0 0 2 7 8 5 0 0 0

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019
public void show()
{ 
    for(int x = 0 ; x < 9 ; x++)
    {
        for(int y = 0 ; y < 9 ; y++)
        {
            System.out.print(values[x][y]);
            System.out.print("\t");
            if ((y + 1) % 3 == 0) {
                System.out.print("|\t");
            }
        }
        System.out.println();
        if ((x + 1) % 3 == 0) {
            System.out.println("----------------------");
        }
    }
}
0 голосов
/ 06 февраля 2019

Если вам не хватает только вертикальных линий в каждой строке, вы можете добавить в строку условный оператор печати, поэтому после второго и шестого элемента добавьте вертикальную линию.Может быть что-то вроде следующего:

if(rowIndex == 2 || rowIndex == 5) {
    System.out.print("|");
}

edit: одна вещь, на которую стоит обратить внимание, это то, что вам нужно будет изменить свои циклы, чтобы отслеживать, по какому индексу вы находитесь.

Попробуйтеследующее:

for(int[]row:values)
    {
        for(int rowIndex = 0; rowIndex < row.length(); rowIndex++)
        {
            System.out.print(row[rowIndex]);
            System.out.print("\t");

            if(rowIndex == 2 || rowIndex == 5) {
                 System.out.print("|");
                 System.out.print("\t");
            }
        }
        System.out.println();
    }
}
...