我必须在打印代码的底部创建一个循环
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);
}
}
}
答案 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]
数组,而使用从for
到0
循环的xevent
。由于它可以在printEvents()
内部的任何地方访问,并且每次调用recordEvent()
时都会更新,因此xevent
的当前值将是{{1}的填充部分的上限}。
解决方案:
将event[]
中的for
循环替换为以下内容:
printEvents()
输出:
以[100,100]记录的袋熊侦查事件
事件编号0被记录为10:53
事件1是在10:59记录的