【发布时间】:2016-12-05 09:14:11
【问题描述】:
考虑下面的代码,它计算数组中每个元素的数量:
public static void getCounts(int[] list) {
int current = list[0];
int count = 0;
for (int i = 0; i < list.length; i++, count++) {
if (list[i] > current) {
System.out.println(current + " occurs " + count + timeOrTimes(count));
current = list[i];
count = 0;
}
}
System.out.println(current + " occurs " + count + timeOrTimes(count));
}
对于这个问题,请假设list 是按升序排列的。如果list是[1, 1, 2, 3, 4, 4],例如,输出是:
1 occurs 2 times
2 occurs 1 time
3 occurs 1 time
4 occurs 2 times
现在,如果我去掉 for 循环之后的 println,即
public static void getCounts(int[] list) {
int current = list[0];
int count = 0;
for (int i = 0; i < list.length; i++, count++) {
if (list[i] > current) {
System.out.println(current + " occurs " + count + timeOrTimes(count));
current = list[i];
count = 0;
}
}
// System.out.println(current + " occurs " + count + timeOrTimes(count));
}
然后使用相同的示例输入,输出变为:
1 occurs 2 times
2 occurs 1 time
3 occurs 1 time
换句话说,如果list[i] 是数组的最大值,则if 块不会执行。为什么会这样?对于上面的例子,第一个4的索引是i = 4,list[4] > 3,所以条件语句满足了,但还是不会执行。
如何调整代码以使if 块适用于所有情况?
谢谢
【问题讨论】:
-
这个问题属于初学者水平,但经过深思熟虑,写得很好,达到了所有必要的要点。我希望更多的初学者问题和这个一样好。
标签: java arrays if-statement for-loop