Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法引用填充的二维数组_Java_Arrays_Multidimensional Array - Fatal编程技术网

Java 无法引用填充的二维数组

Java 无法引用填充的二维数组,java,arrays,multidimensional-array,Java,Arrays,Multidimensional Array,我正试图完成这个魔方项目,但是当填充这个方块时,它引用的是空的实例变量,而不是定义了大小的实例变量,我似乎无法修复它 第22行显示空错误 有人能帮我吗 public class MagicSquare { private int[][] magicSquare; public MagicSquare(int size){ int[][] magicSquare = new int[size][size]; fillSquare(size);

我正试图完成这个魔方项目,但是当填充这个方块时,它引用的是空的实例变量,而不是定义了大小的实例变量,我似乎无法修复它

第22行显示空错误

有人能帮我吗


public class MagicSquare {
    private int[][] magicSquare;

    public MagicSquare(int size){
        int[][] magicSquare = new int[size][size];
        fillSquare(size);
    }
    private void fillSquare(int size){
        int row = size - 1;
        int col = size / 2;
        magicSquare[row][col] = 1;

        for (int i = 2;i < size * size;++i){
            if (magicSquare[(1 + row) % size][(col + 1) % size] == 0){
                row = (1 + row) % size;
                col = (1 + col) % size;
            }
            else {
                row = ( row - 1 + size) % size;
            }
            magicSquare[row][col] = i;
        }
    }
    public void toString(int size){
        for (int i = 0; i < size;++i){
            for (int j = 0; j < size;++j){
                System.out.println(magicSquare[i][j]);
            }
        }

    }

}




公共级魔法广场{
私人int[][]magicSquare;
公共MagicSquare(整数大小){
int[]magicSquare=新的int[size][size];
正方形(大小);
}
专用空白填充正方形(整数大小){
int行=大小-1;
int col=大小/2;
magicSquare[行][列]=1;
对于(int i=2;i
不要在
int[]中初始化
magicSquare
magicSquare=newint[size][size]

它超越了全球magicSquare实例

您的代码应该如下所示:

 public class MagicSquare {
        private int[][] magicSquare;

        public MagicSquare(int size){
            magicSquare = new int[size][size];
            fillSquare(size);
        }
        private void fillSquare(int size){
            int row = size - 1;
            int col = size / 2;
            magicSquare[row][col] = 1;

            for (int i = 2;i < size * size;++i){
                if (magicSquare[(1 + row) % size][(col + 1) % size] == 0){
                    row = (1 + row) % size;
                    col = (1 + col) % size;
                }
                else {
                    row = ( row - 1 + size) % size;
                }
                magicSquare[row][col] = i;
            }
        }
        public void toString(int size){
            for (int i = 0; i < size;++i){
                for (int j = 0; j < size;++j){
                    System.out.println(magicSquare[i][j]);
                }
            }

        }

    }
公共类MagicSquare{
私人int[][]magicSquare;
公共MagicSquare(整数大小){
magicSquare=新整数[size][size];
正方形(大小);
}
专用空白填充正方形(整数大小){
int行=大小-1;
int col=大小/2;
magicSquare[行][列]=1;
对于(int i=2;i
int[]magicSquare=新的int[size][size]应该是
magicSquare=newint[size][size]