簡體   English   中英

執行while循環(Java)

[英]Do while loops (Java)

我試圖寫一個程序來求和每個4位數字的每個數字。 例如,我從1000開始,一旦加了1001,千就變成2,百變成0,十變成0,單位變成1。這應該繼續將每個數字相加,直到達到9999。這是我的代碼,只輸出9999。

int num = 1000, unit = 0, ten = 0, hundred = 0, thousand = 0, newNum = 0, sumth = 0, sumh = 0, sumten = 0, sumu = 0;

while (num <= 9999)
{
    unit = num%10;
    newNum = num/10;
    ten = newNum%10;
    newNum=newNum/10;
    hundred = newNum%10;
    thousand = newNum/10;
    num++;
}
sumth = thousand + sumth;
sumh = hundred + sumh;
sumten = ten + sumten;
sumu = unit + sumu;

System.out.println(sumth + " " + sumh + " " + sumten + " " + sumu);

對此進行一些整理以提高可讀性:

int num = 1000,
    sumThousands = 0,
    sumHundreds = 0,
    sumTens = 0,
    sumUnits = 0;

    while (num <= 9999)
    {
        int units = num % 10;
        int tens = (num / 10) % 10;
        int hundreds = (num / 100) % 10;
        int thousands = (num / 1000) % 10;

        sumUnits += units;
        sumTens += tens;
        sumHundreds += hundreds;
        sumThousands += thousands;

        num++;
    }

System.out.println(sumThousands + " " + sumHundreds + " " + sumTens + " " + sumUnits);

您將獲得的輸出是:

45000 40500 40500 40500

這是預期的。 對於整數1000..9999:

  • 在千列中,每個數字1..9重復1000次
    • 因此千和為1000(9+8+7+6+5+4+3+2+1) = 1000(9(10)/2) = 45000
  • 在每隔一列中,每個數字0..9重復900次
    • 因此其他列的總和為900(9+8+7+6+5+4+3+2+1) = 900(9(10)/2) = 40500

它應該在while loop內移動

while (num <= 9999)
    {
        unit = num%10;
        newNum = num/10;
        ten = newNum%10;
        newNum=newNum/10;
        hundred = newNum%10;
        thousand = newNum/10;

        sumth = thousand + sumth;
        sumh = hundred + sumh;
        sumten = ten + sumten;
        sumu = unit + sumu
        num++;    

    }


輸出: 45000 40500 40500 40500
工作鏈接: https : //ideone.com/WrAX8D

暫無
暫無

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

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