создание цикла для добавления 1 и исключения элементов массива - PullRequest
0 голосов
/ 10 октября 2018

Я должен создать цикл в нижней части кода, который печатает

Event number 0 was recorded at 10:53
Event number 1 was recorded at 10:59

цикл должен создать его, чтобы добавить 1 каждый раз от 0 до 1 и не включать все другие нулевые элементы вмассив.мой текущий код выводит

Record of Wombat Detection events at [100,100] 
Event number 0 was recorded at 10:53
Event number 0 was recorded at 10:59
Event number 0 was recorded at null
Event number 0 was recorded at null
Event number 0 was recorded at null

Это мой текущий код

class RecordEvents {
   public static void main (String args[]) {
      Recorder r1 = new Recorder (100,100,"Wombat Detection");
      r1.recordEvent("10:53");
      r1.recordEvent("10:59");
      r1.printEvents();
   }
}

class Recorder {
   int xPos,yPos;
   String eventType;
   String [] event = new String [5];

   int xevent = 0;       
   Recorder (int xPos, int yPos, String eventType ) {
      this.xPos = xPos;
      this.yPos = yPos ;
      this.eventType = eventType;
   }

   void recordEvent (String eventTime ) {
      event [xevent] = eventTime;
      xevent++;
   }
   void printEvents(){
      System.out.println ("Record of " + eventType +
                       " events at [" + xPos + "," + yPos + "] " );
      for (String current: event) {
         System.out.println("Event number 0 was recorded at " + current);
      }     
   }
}

Ответы [ 3 ]

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

Вы можете попробовать это

class Recorder {
int xPos,yPos;
String eventType;
List<String> event = new ArrayList<String>();

int xevent = 0;
Recorder (int xPos, int yPos, String eventType ) {
    this.xPos = xPos;
    this.yPos = yPos ;
    this.eventType = eventType;
}

void recordEvent (String eventTime ) {
    event.add(eventTime);
    xevent++;
}
void printEvents(){
    System.out.println ("Record of " + eventType +
            " events at [" + xPos + "," + yPos + "] " );

    int index=0;
    for (String current: event) {
        String logOut=String.format("Event number %s was recorded at ",index);
        System.out.println(logOut+ current);
        index++;
    }
}

}

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

Вам нужно сделать только одно изменение приятель.

В функции printEvents() цикл for выполняет итерацию по всему массиву event[], независимо от того, содержат ли все его индексы элементы или нет.

Итак, все, что вам нужносделать это только одно изменение.Вместо зацикливания всего массива event[5] используйте for, который переходит от 0 до xevent.Поскольку он доступен в любом месте внутри printEvents() и обновляется при каждом вызове recordEvent(), текущее значение xevent будет верхней границей заполненной части event[].

РЕШЕНИЕ : Заменить петлю for в printEvents() следующим:

for (int i = 0; i < xevent; i++) {
         System.out.println("Event number " + i + " was recorded at " + event[i]);
} 

ВЫХОД:

Записьсобытий Wombat Detection в [100,100]

Событие № 0 было записано в 10: 53

Событие № 1 было записано в 10: 59

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

Ваш массив "events" инициализируется, чтобы содержать 5 элементов каждый раз, когда он создается.Это ваш последний цикл for будет выполняться 5 раз, независимо от его содержания.

Рассмотрите возможность использования collection , такого как реализация List, учитывая, что значения в этом случае могут быть не уникальными.Таким образом, вы получаете динамический размер.

Я не уверен, является ли это частью вашего вопроса, но вы также распечатаете 0 для каждого элемента в этом списке, поскольку он жестко задан в System.out.println ();звонок, который вы делаете в своем последнем цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...