创建循环以加1并排除数组元素

时间:2018-10-10 07:35:46

标签: java arrays loops

我必须在打印代码的底部创建一个循环

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

循环必须创建一个循环,以每次0到1加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 :(得分:0)

您的“事件”数组在每次实例化时都会初始化为包含5个元素。这样,无论其内容如何,​​您的最终for循环将运行5次。

考虑使用 collection (例如List实现),请考虑在这种情况下值可能不是唯一的。这样,您可以动态调整大小。

我不确定这是否是您问题的一部分,但是您还将为该列表中的每个项目打印0,因为它在System.out.println()中是硬编码的;在您的最终for循环中调用。

答案 1 :(得分:0)

您可以尝试

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++;
    }
}

}

答案 2 :(得分:0)

您需要进行仅一项更改好友。

在函数printEvents()中,for循环遍历整个event[]数组,而不管其所有索引是否包含元素。

因此,您只需要进行一项更改即可。而不是遍历整个event[5]数组,而使用从for0循环的xevent。由于它可以在printEvents()内部的任何地方访问,并且每次调用recordEvent()时都会更新,因此xevent的当前值将是{{1}的填充部分的上限}。

解决方案:  将event[]中的for循环替换为以下内容:

printEvents()

输出:

  

以[100,100]记录的袋熊侦查事件

     

事件编号0被记录为10:53

     

事件1是在10:59记录的