Java 对象-即arraylist<;字符串>;-给出NullPointerException错误
我创建了一个类来创建一个对象,它是一个由4个元素组成的Java 对象-即arraylist<;字符串>;-给出NullPointerException错误,java,android,nullpointerexception,Java,Android,Nullpointerexception,我创建了一个类来创建一个对象,它是一个由4个元素组成的ArrayList——它们被选为另一个ArrayList的一系列随机元素,并且它们必须是唯一的 当我运行应用程序并创建对象时,下一步是进入对象并取出元素并使用它们中的每一个-不幸的是,在第一个元素LogCat给了我致命错误-NullPointerException,并说null是类的set方法,其中bigerarraylist的随机元素被添加到应该添加的元素中由setter填充 我不明白为什么——用于在活动中生成随机元素的相同代码工作得很好,
ArrayList
——它们被选为另一个ArrayList
的一系列随机元素,并且它们必须是唯一的
当我运行应用程序并创建对象时,下一步是进入对象并取出元素并使用它们中的每一个-不幸的是,在第一个元素LogCat给了我致命错误-NullPointerException
,并说null
是类的set方法,其中biger
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;
}
}
公共类QuizSetGenerator{
私有数组列表集;
QuizSetGenerator(ArrayList列表){
this.SetQuizSet(list);//logcat中指向的第二个Null
}
公共无效SetQuizSet(ArrayList a){
//选择1
Random rand=新的Random();
/*int[]索引=新的int[4];
布尔重复=假;
//获取四个0-a.size的随机数,并将它们保存在整数数组中,每个都必须是唯一的
对于(inti=0;i您从不创建集合。您声明它,但从不将其定义为新的ArrayList()。如果没有它,它就不会指向有效的引用。你从哪里得到错误?你如何调用它?没有主函数。请堆栈跟踪。错误是在新的arraylist中填充了我上面所写的随机选取的“base”arraylist元素。我将在代码中添加注释以使其更清晰。