二维对象错误数组

时间:2015-10-29 14:35:46

标签: java arrays object

我无法使用类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;
        }
    }
}

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);
            }
        }
    }

}

(亲爱的有动力的编辑,如果你把我的代码片段保留在内,我会很高兴。)