簡體   English   中英

Java中的if else語句錯誤沒有運行時錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM