簡體   English   中英

While循環如何退出? (java)

[英]How does this While loop exit ? (java)

我試圖弄清楚該程序是如何工作的,但我陷入了While循環,我不明白第二個循環是如何退出的,因為v永遠不會等於0或負數。 因為這是退出循環的唯一條件,還是我想念更深的東西? 該代碼將整數(> 0)轉換為二進制。

public class Binary { 
public static void main(String[] args) { 

    // read in the command-line argument
    int n = Integer.parseInt(args[0]);

    // set v to the largest power of two that is <= n
    int v = 1;
    while (v <= n/2) {
        v = v * 2;
    }

    // check for presence of powers of 2 in n, from largest to smallest
    while (v > 0) {

        // v is not present in n 
        if (n < v) {
            System.out.print(0);
        }

        // v is present in n, so remove v from n
        else {
            System.out.print(1);
            n = n - v;
        }

        // next smallest power of 2
        v = v / 2;
    }

    System.out.println();

}

}

v是一個int,在Java 1/2中,一個int給出0。您的循環經過2的所有冪,因此將達到1,然后為0。

在調試器中運行它以查看!

想開始

n = 10

所以

v = 8

系統將打印

1010

和迭代是:

1-10> 8 else語句,因此打印1並:n = 2,v = 4

2-2 <4 if語句,因此打印0並:v = 2

3-2 = 2 else語句,因此打印1並:n = 0,v = 1

4-0 <1 if語句因此輸出0且:n = 0,v = 1/2即0為整數

在下一次while條件迭代期間,不再滿足條件,代碼結束。

我認為您在理解整數部分時遇到問題。 在整數除法中, 3/2不等於1.5 ,而是1 因此類似地1/2並不等於0.5而是0 由於變量v是整數,因此除以整數2始終是整數除法。 因此,變量v最終將達到0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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