Java 参考问题

Java 参考问题,java,pointers,Java,Pointers,我正在编写一个程序,创建一个对象,该对象保存来自用户的输入,并将其存储在ArraySortedList中。要求之一是检查特定对象是否已在列表中。我遇到的问题是,每当我输入一组可靠的信息时,我就会得到一个错误 //Global variables at the top ListInterface <Golfer> golfers = new ArraySortedList < Golfer > (20); Golfer golfer; //

我正在编写一个程序,创建一个对象,该对象保存来自用户的输入,并将其存储在ArraySortedList中。要求之一是检查特定对象是否已在列表中。我遇到的问题是,每当我输入一组可靠的信息时,我就会得到一个错误

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