一个对象 - 它是arraylist <string> - 给出NullPointerException错误</string>

时间:2014-03-15 03:21:04

标签: java android nullpointerexception

我创建了一个类,使一个对象成为4个元素的ArrayList<String> - 它们被选为另一个ArrayList<String>的一系列随机元素,并且它们必须是唯一的。

当我运行应用程序并创建一个对象时,下一步是进入对象并取出元素并使用它们 - 不幸的是,第一个元素LogCat给了我fatal error - NullPointerException并说null在类的set方法中,bigger arraylist的随机元素被添加到应该由setter填充的元素中。

我不明白为什么 - 用于在活动中生成随机元素的相同代码工作正常,但我想用一个对象来做,因为它会完成几次。我尝试过不同的方式,但结果每次都是一样的。也许我犯了一个愚蠢的错误,或者我错过了什么。我将不胜感激任何帮助。代码如下......

班级:

public class QuizSetGenerator {

    private ArrayList<String> set;

    QuizSetGenerator(ArrayList<String> list) {
        this.SetQuizSet(list);   //second Null Pointed in logcat
    }

    public void SetQuizSet(ArrayList<String> a) {
        //option 1
        Random rand = new Random();
        /*int[] index = new int[4];
        boolean repeats = false;
        //get four random numbers 0-a.size and save them in an int array, each of them must be unique
        for(int i=0; i<4; ) {
        index[i] = rand.nextInt(a.size());
        for(int j=0; j<i; j++) {
        if(index[j]==index[i]) {
        repeats = true; break;
        }
        }
        this.set.add(a.get(index[i]));  //First null show in logcat
        i++;
        }*/

        //option2
        int[] n = new int[5];
        boolean repeats = false;
        for(int j=0; j<5; ) {
            do {
                n[j] = rand.nextInt(a.size());
                for(int i=0; i<j; i++) {
                    if(n[i]==n[j]) {
                        repeats = true; break;
                    }
                }
            } while (repeats);
            this.set.add(a.get(n[j]));  //First null shown in logcat
            j++;
        }

        //option3
        /*for(int i=0; i<4; i++) {
        Collections.shuffle(a);
        this.set.add(a.get(0));  //First null show in logcat
        }*/
    }

    public ArrayList<String> GetQuizSet() {
        return this.set;
    }
}

1 个答案:

答案 0 :(得分:0)

你永远不会创造集合。你声明它,但永远不要将它定义为新的ArrayList()。没有它,它没有指向有效的参考。