[英]If else statement error in java no run time error
這是我的代碼:
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}時執行,但是我不明白為什么這部分沒有執行? 我的代碼塊中是否存在任何邏輯錯誤?
好的,讓我們進行跟蹤:
k1=0, k2=0:
timea[0]=1, timeb[0]=3
Timeb is big
k1=1, k2=0:
timea[1]=2, timeb[0]=3
Timeb is big
k1=2, k2=0:
timea[2]=3, timeb[0]=3
We are same
k1=2, k2=1:
k2 is bigger than timeb length, therefore the while loop ends
那部分代碼將永遠不會在這些示例數組下執行...
是的,存在邏輯錯誤。
當k2
的值大於0
,while循環由於其條件while(k1<timea.length && k2<timeb.length)
。 當您傳遞到第二個if時, k2
的值將增加到1
,這不滿足while循環條件。
好吧,它永遠不會打印,因為它永遠不會實現。
int [] timea={1,2,3,4,5,6};
int [] timeb={3};
所以你的while循環: while(k1<timea.length && k2<timeb.length)
timea
的大小為6, timeb
的大小為1。
在第一次迭代中,它將1與3進行比較。由於1的timea[k1]
小於3的timea[k2]
,因此打印"Timeb is big"
並將k1
加1。
在第二次迭代中,它將2與3進行比較。由於2的timea[k1]
小於3的timea[k2]
,因此它會打印"Timeb is big"
並將k1
加1。
然后,在第三次(也是最后一次)迭代中,將3與3進行比較。由於timea[k1]
為3等於timea[k2]
為3,因此打印"We are same"
並將k2
加1。
但是這一次因為k2
為1,並且在您的while循環中,您的條件說,要繼續k2
必須小於timeb
的大小(也為1),它就不能繼續進行下一次循環迭代,因為只有一個元素。
這有意義嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.