gpt4 book ai didi

java - 枚举静态方法抛出空指针异常

转载 作者:太空宇宙 更新时间:2023-11-04 14:15:48 24 4
gpt4 key购买 nike

我尝试使用复合框和单个数字来实现数独谜题。我有类似的东西:

数独谜题

class SudokuPuzzle {
SudokuBox[][] grid = new SudokuBox[3][3];

public void setDigit(int row, int col, int digit) {
SudokuDigit a = SudokuDigit.SudokuDigitfromInt(digit);
grid[row / 3][col / 3].setDigit(row % 3, col % 3, a);
}
}

数独框

class SudokuBox {
SudokuDigit[][] grid = new SudokuDigit[3][3];

public void setDigit(int row, int col, SudokuDigit digit) {
grid[row][col] = digit;
}
}

数独数字

enum SudokuDigit {
one,two,three,four,five,six,seven,eight,nine;

public static SudokuDigit SudokuDigitfromInt(int digit) {
switch(digit) {
case 1: return one;
case 2: return two;
case 3: return three;
case 4: return four;
case 5: return five;
case 6: return six;
case 7: return seven;
case 8: return eight;
case 9: default: return nine;
}
}

public static int IntfromSudokuDigit(SudokuDigit digit) {
switch(digit) {
case one: return 1;
case two: return 2;
case three: return 3;
case four: return 4;
case five: return 5;
case six: return 6;
case seven: return 7;
case eight: return 8;
case nine: default: return 9;
}
}
}

NullPointerExceptionSudokuPuzzle.setDigit() 处抛出。类中不相关的部分在这里被剥离。为什么会抛出这样的异常?

最佳答案

您需要在实例化数组后实例化数组的每个元素:

SudokuBox[][] grid=new SudokuBox[3][3];
for(int y=0; y<3; y++) {
for(int x=0; x<3; x++) {
grid[y][x] = new SudokuBox();
}
}

与基本类型(如 int、boolean、long 等)不同,对象需要为数组的每个元素实例化。

关于java - 枚举静态方法抛出空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27765374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com