【发布时间】:2018-08-03 14:37:12
【问题描述】:
这是我的代码:
public class part {
public static void main(String args[]){
int[] timea = {1,2,3,4,5,6};
int[] timeb = {3,5};
int k1 = 0, k2 = 0;
while(k1 < timea.length && k2 < timeb.length) {
if (timea[k1] < timeb[k2]) {
System.out.println("Timeb is big");
k1++;
} else if (timea[k1] == timeb[k2]) {
System.out.println("We are same");
k2++;
} else if (timea[k1] > timeb[k2]) {
System.out.println("Timea is big");
k1++;
}
}
}
}
输出:
Timeb is big
Timeb is big
We are same
Timeb is big
we are same
我的问题是 Timea is big 从未打印过。但是按照我的逻辑
else if (timea[k1] > timeb[k2]) {
System.out.println("Timea is big");
k1++;
}
这个代码块在它得到 {6} 时被执行,但我不明白为什么这部分没有被执行?我的代码块中是否有任何逻辑错误?
【问题讨论】:
-
只要用你的调试器,或者在代码中加上println,显示每次迭代时每个变量的值,你就明白了
-
Hint 提示检查执行
k2++后会发生什么。while-loop下一次迭代的条件是什么。 -
你能分享你试图通过这段代码实现的目标吗?根据您的代码 k2 变为 1。所以 while 循环不会再次执行。
标签: java if-statement logic logical-operators