2010-04-15 15 views
0

我有一个相当恼人的问题。我有一个名为Person的类和一个名为Event的类,用于创建用于在某个事件中竞争的竞争对手的对象。当我添加一个竞争对手,并且GUI列表相应地更新时,但是当我添加一个事件时,数组中的元素不会取得类Event中实例变量名的值,因此GUI不会显示事件名称,尽管它正在被正确添加到数组中。我怎样才能让listOfEvents数组(这是一个事件对象数组)的每个元素中的事件对象具有事件的名称。我应该补充说这是为了大学,虽然这不是我们将要评估的部分,但是我遇到了一些问题,并且由于无法看到GUI的代码,所以我碰到了众所周知的砖墙。Java对象数组元素创建但没有正确的名称

我不会包括我写的代码的全部负载,但希望我的描述和下面的代码片段就足够了。任何建议,我会很感激。毫无疑问,我忽略了一些简单的东西!非常感谢。

listOfEvents被声明为:

Event[] listOfEvents = new Event[20]; 

从事件类A片段:

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是一个全局变量):

public void addEvent(String eventName) { 
     listOfEvents[p] = new Event(eventName); 
     p++; 
    } 
+2

你能告诉我们什么显示在GUI中的名称? – 2010-04-15 13:27:43

+0

也许不相关,但是如果p> = 20,确保listOfEvents不会溢出? – Seffi 2010-04-15 13:32:18

+4

因为这被标记为“大学”,那么我认为这是一个家庭作业思考,因此你不得不使用数组。但是,当编程为真实时,我推荐使用其中一个集合类,如ArrayList:http://java.sun.com/javase/6/docs/api/java/util/ArrayList.html – 2010-04-15 13:35:31

回答

1

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

+0

我的字面上只有一个EUREKA时刻!我很傻,当然他们的图形用户界面依赖于toString()方法,但是有一个准系统的准确定义,它提供了一个惊喜返回“”; !!! 现在不用担心了,我已经解决了它,但是感谢您成为这种实现的刺激。我告诉过你,这简直是愚蠢的! – ComethTheNerd 2010-04-15 13:47:07

+0

很高兴我能帮到你。你能选择我的答案吗?我昨天开始在Stack上发帖,我非常期待能够选择我的答案来看看会发生什么:) – Beothorn 2010-04-15 13:57:39

0

看不到任何问题,但设置“p “变量是一个全局变量。

你宁愿把:

public void addEvent(String eventName, int p) { 
     listOfEvents[p] = new Event(eventName); 
     p++; 
} 

我不认为我们有足够的元素来回答你。

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

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

您确定每次尝试添加事件时都不重新初始化p参数吗? (所以它将始终为0 ...)

您确定您的addEvent字符串名称不为空/空吗?这是好的价值吗?

+1

在方法结尾的'p ++'没有明显的效果,而且毫无意义。 – 2010-04-15 13:38:37

+0

在实际的代码中,我实际上将P设置为另一个getNbrEvents方法的结果,它循环访问数组元素,直到它到达一个空元素为止,所以我不使用全局P,因为它是毫无意义的。我只是觉得如果他们有点偏离话题,我会包括所有其他的比特。 不过,我现在已经解决了如果你看到上面的问题,我意识到是用toString方法(durrrr!)。感谢您对帮助家人的承诺,Stackoverflow是学习的好地方......并从错误中学习! – ComethTheNerd 2010-04-15 13:49:08

相关问题