我无法使用类Table的对象数组。类表没有在它中执行值和2个函数的返回和设置,在主要我只创建一个游戏对象你似乎有什么不对吗? 给出的错误是::
线程中的异常" main" java.lang.NullPointerException at 游戏中的Game.check_me(Game.java:33)。(Game.java:19)at Main.main(Main.java:7)Java结果:1
我正在谈论的是它给我一个错误的数组:/
import java.util.Random;
public class Game {
private static final int r = 3;
private static final int w = 4;
private Table1[][] table;
private final String CHAR_LIST= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public Game(){
this.table = new Table1 [r][w];
char value;
//table[2][1].display_value();here is the problem
for(int i=0; i<3; i++){
for(int j=0; j<4; j++){
value=generateRandomChar();
if(check_me(value))
table[i][j].set_value(value);//here is the problem
else{
while(check_me(value))
value=generateRandomChar();
table[i][j].set_value(value);
}
}
}
}
private boolean check_me(char value){
for(int i=0; i<table.length; i++){
for(int j=0; j<table[i].length; j++){
char ch=table[i][j].return_Value();
if(ch==value)
return false;
}}
return true;
}
public void display_table(){
for(int i=0; i<table.length; i++){
for(int j=0; j<table[i].length; j++){
table[i][j].display_value();
System.out.println();
}
}
}
private char generateRandomChar(){
int number = getRandomNumber();
char ch = CHAR_LIST.charAt(number);
return ch;
}
private int getRandomNumber() {
int randomInt = 0;
Random randomGenerator = new Random();
randomInt = randomGenerator.nextInt(CHAR_LIST.length());
if (randomInt - 1 == -1) {
return randomInt;
} else {
return randomInt - 1;
}
}
}
答案 0 :(得分:0)
按照tnw的注释(包括你得到的错误类型和Table1类的实现)。
到目前为止,我认为你会得到一个NullPointerException。 因为使用新的Table1 [r] [w]初始化数组。
接下来要做的是在for循环中访问它们。但是你还没有在上面给出的代码中填充数组。您使用table [i] [j] .set_value(value)访问它们时,table [i] [j]的值为null。
public Game(){
this.table = new Table1 [r][w];
//fix for your problem
for (int i = 0; i < r; i++) {
for (int j = 0; j < w; j++) {
this.table[i][j] = new Table1();
}
}
char value;
//table[2][1].display_value();here is the problem
for(int i=0; i<3; i++){
for(int j=0; j<4; j++){
value=generateRandomChar();
if(check_me(value))
table[i][j].set_value(value);//here is the problem
else{
while(check_me(value))
value=generateRandomChar();
table[i][j].set_value(value);
}
}
}
}
(亲爱的有动力的编辑,如果你把我的代码片段保留在内,我会很高兴。)