Java 参考问题
我正在编写一个程序,创建一个对象,该对象保存来自用户的输入,并将其存储在ArraySortedList中。要求之一是检查特定对象是否已在列表中。我遇到的问题是,每当我输入一组可靠的信息时,我就会得到一个错误Java 参考问题,java,pointers,Java,Pointers,我正在编写一个程序,创建一个对象,该对象保存来自用户的输入,并将其存储在ArraySortedList中。要求之一是检查特定对象是否已在列表中。我遇到的问题是,每当我输入一组可靠的信息时,我就会得到一个错误 //Global variables at the top ListInterface <Golfer> golfers = new ArraySortedList < Golfer > (20); Golfer golfer; //
//Global variables at the top
ListInterface <Golfer> golfers = new ArraySortedList < Golfer > (20);
Golfer golfer;
//Function Variables
Scanner add = new Scanner(System.in);
Golfer tempGolfer;
String name = ".";
int score;
while(!name.equals("")) //Continues until you hit enter
{
System.out.print("\nGolfer's name (press Enter to end): ");
name = add.next();
System.out.print("Golfer's score (press Enter to end): ");
score = add.nextInt();
tempGolfer = new Golfer(name,score);
if(this.golfers.contains(tempGolfer))
System.out.println("The list already contains this golfer");
else
{
this.golfers.add(this.golfer);
System.out.println("\nYou added \'Golfer(" + name + "," + score + ")\' to the list!");
}
}
我几乎可以肯定这与变量的引用方式有关,但我不确定如何修复它,变量引用有很多问题。您的高尔夫球手变量未初始化。 尝试:
this.golfers.add(tempGolfer);
尊敬。如果您想要一组独特的元素,我会使用SortedSet。是的,我宁愿使用不同的ADT,但我们不得不使用这个:p。我必须检查一下,谢谢!好的,当您调用this.golfers.add(this.golfer)时,您正在将null添加到列表中,因为this.golfer从未分配。现在,第二次通过您的代码,NPE来自您在第一次迭代时添加到列表中的空引用。谢谢,我现在看到了我所做的。当我在一个问题上陷入困境时,我会有隧道般的视力。我现在有一个新问题,这有点相关。当我试图找出列表是否已经包含该元素的副本时。例如,如果我尝试输入{Dave,12}和{Dave,12}两次,就不会发现我在语句“if(this.golfers.contains(new Golfer(name,score))”中输入了相同的信息。我认为这是在比较对象的地址,看它们是否匹配,但是否有必要使用equals()函数(contains函数使用的)来检查重复数据?您好,您应该在Golfer类中实现equals方法。它将被调用来检查两个实例是否相等。谢谢,我想他希望我们通过我们必须使用的ADT来完成,但我可能只是按照你说的做,简单得多。这个周末我需要阅读ADT和变量引用:P
this.golfers.add(tempGolfer);