Creating a Magic Square in java

后端 未结 2 1620
轮回少年
轮回少年 2021-01-23 03:31

I have to write a program that takes in an odd number from the user and creates a magic square. A magic square is one where the sum of each row, column, and diagonal is the same

2条回答
  •  后悔当初
    2021-01-23 03:39

    Removing 3.4 will probably fix your code.

    public static void main(String[] args) {
    
        System.out.print("Give an odd number: ");
        int n = console.nextInt();
        int[][] magicSquare = new int[n][n];
    
        int number = 1;
        int row = 0;
        int column = n / 2;
        int curr_row;
        int curr_col;
        while (number <= n * n) {
            magicSquare[row][column] = number;
            number++;
            curr_row = row;
            curr_col = column;
            row -= 1;
            column += 1;
            if (row == -1) {
                row = n - 1;
            }
            if (column == n) {
                column = 0;
            }
            if (magicSquare[row][column] != 0) {
                row = curr_row + 1;
                column = curr_col;
                if (row == -1) {
                    row = n - 1;
                }
            }
        }
    
        for (int i = 0; i < magicSquare.length; i++) {
            for (int j = 0; j < magicSquare.length; j++) {
                System.out.print(magicSquare[i][j] + " ");
            }
            System.out.println();
        }
    }
    

    Setting n = 3 gets me the following output which seems correct.

    8 1 6 
    3 5 7 
    4 9 2 
    

提交回复
热议问题