Java 程序不返回数组的元素

Java 程序不返回数组的元素,java,arrays,Java,Arrays,下面是一个程序,我需要将字符串时间和int数据存储为数组中的对象,然后将它们打印出来。这就是我目前正在做的事情。我认为这是我的recordEvent方法的问题 class RecordEvents4 { public static void main(String[] args){ Recorder4 r1 = new Recorder4(100,100,"Wombat Detection"); r1.recordEvent("10:53",20); r

下面是一个程序,我需要将字符串时间和int数据存储为数组中的对象,然后将它们打印出来。这就是我目前正在做的事情。我认为这是我的recordEvent方法的问题

class RecordEvents4 {
   public static void main(String[] args){
      Recorder4 r1 = new Recorder4(100,100,"Wombat Detection");
      r1.recordEvent("10:53",20);
      r1.recordEvent("10:59",20);
      r1.recordEvent("11:05",20);
      r1.recordEvent("12:59",10);
      r1.recordEvent("13:59",10);
      r1.recordEvent("14:06",10);
      r1.printEvents();
   }
}

class Recorder4 {
   int xPos, yPos;
   String eventType;
   EventInformation[] event = new EventInformation[10];

   int xevent = 0;

   final int EVENT_MAX = 10;

   Recorder4(int xPos, int yPos, String eventType){
      this.xPos = xPos;
      this.yPos = yPos;
      this.eventType = eventType;
   }

   public void recordEvent(String time, int datum){
      /*for(int i = 0; i<event.length; i++){
         event[i] = new EventInformation(time, datum);
      }*/

      event[xevent] = new EventInformation(time, datum);

      xevent++; 
      if(xevent > EVENT_MAX){
         System.out.println("Event log overflow - terminating");
         System.exit(1);
      }
   }

   void printEvents(){       
      System.out.println("Record of " + eventType + " events at [" + xPos + "," + yPos + "]");  
      for(int i = 0; i < xevent; i++){
         System.out.println("Event number " + i + " was recorded at " + event[i] + " with datum = " + event[i]);
      }
   }
}

class EventInformation {
   String eventTime;
   int eventDatum;

   EventInformation(String eventTime, int eventDatum){
      this.eventTime = eventTime;
      this.eventDatum = eventDatum;      
   }
}
这就是我所期待的:

Record of Wombat Detection events at [100,100] 
Event number 0 was recorded at 10:53 with datum = 20 
Event number 1 was recorded at 10:59 with datum = 20 
Event number 2 was recorded at 11:05 with datum = 20 
Event number 3 was recorded at 12:59 with datum = 10 
Event number 4 was recorded at 13:59 with datum = 10 
Event number 5 was recorded at 14:06 with datum = 10

有人建议我使用toString(),但我不确定我是否在recordEvent()的正确方向上,在recordEvent()中,我要将方法参数分配给EventInformation对象,存储在事件数组元素中的引用。

实际上是要求Java打印出事件数组的元素。在这个数组的声明中,您为数组中的元素指定了
EventInformation
类型。默认情况下,Java显然不知道如何打印它,因为这是您自己定义的!要解决此问题,请更改打印语句:

    System.out.println("Event number " + i + " was recorded at " + event[i].eventTime + " with datum = " + event[i].eventDatum);
现在您要求Java打印
eventTime
(一个字符串)和
eventDatum
(一个int)。这些都是Java知道如何打印的东西,因为它们是由Java本身定义的。

您的
printEvents()
方法应该如下所示:

void printEvents(){       
      System.out.println("Record of " + eventType + " events at [" + xPos + "," + yPos + "]");  
      for(int i = 0; i < xevent; i++){
         System.out.println("Event number " + i + " was recorded at " + event[i].eventTime + " with datum = " + event[i].eventDatum);
      }
   }
void printEvents(){
System.out.println(“在[“+xPos+”,“+yPos+”]”处的“+eventType+”事件记录);
对于(int i=0;i
在原始代码中,您尝试打印
EventInformation
的实例两次,而不是先打印
eventTime
字段,然后打印
eventDatum
。因此,您将获得实例的defualt字符串表示形式,如
对象中所定义

如果愿意的话,也可以为
EventInformation
编写getter方法,同时将字段设置为
private
,这可能是更好的做法,尤其是如果以后希望对类执行更多操作的话


编辑:与Oliver-R所说的相同。

您打印的是对象,而不是特定属性。它应该是
System.out.println(“事件编号”+i+”记录在“+Event[i].eventTime+”处,带有datum=“+Event[i].eventDatum)谢谢帮助:)谢谢帮助:)
void printEvents(){       
      System.out.println("Record of " + eventType + " events at [" + xPos + "," + yPos + "]");  
      for(int i = 0; i < xevent; i++){
         System.out.println("Event number " + i + " was recorded at " + event[i].eventTime + " with datum = " + event[i].eventDatum);
      }
   }