【问题标题】:Do while loops (Java)执行while循环(Java)
【发布时间】:2016-10-18 19:25:18
【问题描述】:

我正在尝试编写一个程序来对每个 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);

【问题讨论】:

  • 您的问题是什么?你希望它输出什么?
  • 类似:单位的总和是 5 十位的总和是 10 百位的总和是 6 千位的总和是 7 但我现在只是把它全部放在一行上
  • 当您在调试器中逐步执行此操作时,观察到的行为与您的预期有何不同/具体有什么不同?

标签: java do-while


【解决方案1】:

为了便于阅读,稍微整理一下:

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

【讨论】:

    【解决方案2】:

    应该在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

    【讨论】:

    • 这使它们都成为相同的数字。
    • 例如。如果我有 1000, 1001, 1002, 1003, 1004, 1005 千和是 6,百和是 0,十和是 0,单位和是 15...希望有意义
    最近更新 更多