创建了Java对象数组的元素,但没有正确的名称

创建了Java对象数组的元素,但没有正确的名称,java,Java,我有一个相当恼人的问题。我有一个名为Person的类和一个名为Event的类,它们用于创建对象,供在某个事件中竞争的竞争者使用。当我添加竞争对手时,这很好,GUI列表也会相应更新,但是当我添加事件时,数组中的元素不会采用类事件中实例变量名称的值,因此GUI不会显示事件名称,尽管它被正确地添加到数组中。如何使listOfEvents数组(它是一个事件对象数组)的每个元素中的事件对象都具有事件的名称。我应该补充一点,这是为了大学,虽然这不是我们将要评估的部分,这是我遇到的一些事情,由于无法看到GUI

我有一个相当恼人的问题。我有一个名为Person的类和一个名为Event的类,它们用于创建对象,供在某个事件中竞争的竞争者使用。当我添加竞争对手时,这很好,GUI列表也会相应更新,但是当我添加事件时,数组中的元素不会采用类事件中实例变量名称的值,因此GUI不会显示事件名称,尽管它被正确地添加到数组中。如何使listOfEvents数组(它是一个事件对象数组)的每个元素中的事件对象都具有事件的名称。我应该补充一点,这是为了大学,虽然这不是我们将要评估的部分,这是我遇到的一些事情,由于无法看到GUI的代码,我遇到了众所周知的困难

我不会包括我一直在写的全部代码,但希望我下面的描述和代码片段就足够了。如有任何建议,我将不胜感激。毫无疑问,我忽略了一些简单的事情!非常感谢

事件列表声明为:

Event[] listOfEvents = new Event[20];
事件类中的代码段:

public class Event {
    String name;
    Person[] participants = new Person[10]; // array of competitors for the event

    public Event(String name) {
        this.name = name;
    }
 }
addEvent
方法中使用(
p
是一个全局变量):


没有看到任何问题,但将“p”变量设置为全局变量是一种非常糟糕的做法

你宁愿说:

public void addEvent(String eventName, int p) {
      listOfEvents[p] = new Event(eventName);
      p++;
}
我认为我们没有足够的证据来回答你

您是否尝试过在调试模式下使用断点检查事件数组

数组中的任何事件是否命名为

是否确定每次尝试添加事件时都不重新初始化p参数?(因此它将始终为0…)


您确定您的addEvent字符串名称不是null/空吗?这是一个好值吗?

您是否尝试过实现toString()方法?
如果这不起作用,您可以通过查看GUI上打印的内容来查看工作实现的工作方式或推断调用了哪个方法。

您能告诉我们GUI中显示的名称是什么吗?可能不相关,但如果p>=20,您是否确保listOfEvents不会溢出?因为这被标记为“University”然后我假设这是一个家庭作业,因此你不得不使用数组。但是,在为real编程时,我建议使用一个collections类,例如ArrayList:Hi here,@Hank Gay-GUI编程为在()中列出该事件的事件名称,后面是竞争对手。每次添加事件时,它只显示:(),这意味着正在创建对象(调试时我可以在数组中看到这一点),但没有按预期显示名称@Seffi-在我的实际代码中,我使用了一些措施来确保我不会得到越界异常,但感谢您的关注@Eli Courtwright-我可能想知道事件对象的链接列表是否可以解决这个问题,但我想他们希望这样的数组解决这个问题,这是愚蠢的。见下面的评论!感谢所有在方法末尾的
p++
没有明显的效果,而且是毫无意义的。在实际代码中,我实际上将p设置为另一个方法的结果,该方法通过数组计数元素循环,直到它达到空值,所以我不使用全局p,因为正如您所说,它是无意义的。我只是不认为我会包括所有其他位,如果他们有点离题。尽管如此,我现在已经解决了这个问题,如果你在上面看到的话,我意识到这是用toString方法(Durrr!)解决的。感谢你们对帮助大家的承诺,Stackoverflow是一个学习的好地方…从错误中学习!我真的有一个妙不可言的时刻!!我太傻了,当然他们的GUI依赖于一个toString()方法,这里提供了一个简单的定义,惊奇返回“”;!!!现在不用担心,我已经解决了这个问题,但谢谢你成为实现这一目标的动力。我告诉过你这会是一件非常简单的事情!!很高兴我能帮忙。你能选择我的答案吗?我昨天开始在Stack上发帖,我真的很期待选择我的答案之一,看看会发生什么:)
public void addEvent(String eventName, int p) {
      listOfEvents[p] = new Event(eventName);
      p++;
}