массив не печатает разные объекты - PullRequest
0 голосов
/ 06 октября 2018

когда я иду распечатать массив, он печатает значение для последнего вызванного объекта.Как я могу заставить его распечатывать различные объекты в массиве?Я думаю, что в методе, который я использую для вызова местоположения переменных объекта, хранящихся в массиве, есть ошибка.

class Recorder4 {

int xPos, yPos;
String eventType;
final int EVENT_MAX = 10;
EventInformation[] event = new EventInformation [EVENT_MAX]; //this is the array
int xevent = 0;

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

public void recordEvent (String Time, int Datum) {

  if (xevent <= EVENT_MAX) {
     event[xevent] = new EventInformation(Time, Datum);
     xevent++; //this is where new instances of the object are assigned a place in the array
  }

  else {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].getTime() //i think these methods is where the issue lies
                    + " with datum = " + event[i].getDatum());
  }                     
}
}

class EventInformation {
static String eventTime;
static int eventDatum;

EventInformation (String s, int i) {
  eventTime = s;
  eventDatum = i;}

 public int getDatum() {
  return EventInformation.eventDatum;}

 public String getTime() {
  return EventInformation.eventTime;}

 }

1 Ответ

0 голосов
/ 06 октября 2018

Возможно, проблема в том, как вы определяете переменные вашего класса.В вашем классе EventInformation вы определяете их как статические:

static String eventTime;
static int eventDatum;

Это означает, что будет только ОДНА копия каждой из этих переменных, независимо от того, сколько экземпляров EventInformation вы создадите (т.е. они все будут совместно использоватьта же копия).

Попробуйте удалить ключевое слово static из объявлений переменных, чтобы посмотреть, решит ли это вашу проблему.

...