有人可以解释这个while循环是如何工作的吗?

时间:2015-11-07 01:40:58

标签: java while-loop

我不明白while循环如何剖析信息。有人可以解释它是如何工作的吗?

private static int sumDigits(int number) {
    int sum = 0;                //Initialize sum
    int rem;                    //Initialize remainder

    while (number > 0) {            //If number is greater than 0 true
        rem = number % 10;          //<-- ??
        sum += rem;                 //<-- ??
        number = number/10;         //<-- ??
    }
    return sum;
}

4 个答案:

答案 0 :(得分:1)

理解这段代码的关键是使用两个运算符 - 余数运算符%和整数除法运算符/

  • %运算符通过右侧除以产生余数。如果是% 10,则表示“获取数字的最后一位十进制数”
  • /除法运算符丢弃余数,产生整数结果。将整数除以零会丢弃其最后一位数。

例如,如果您从n = 1234开始并执行

int d = n % 10;
int r = n / 10;

然后d4r123

此时应该清楚循环如何进行终止,以及它在迭代过程中如何累积数字的总和。

答案 1 :(得分:0)

填写您发现自己遇到问题的评论

private static int sumDigits(int number) {
    int sum = 0;                //Initialize sum
    int rem;                    //Initialize remainder



 while (number > 0) {            //If number is greater than 0 true
    rem = number % 10;          //rem now contains the remainder of the number / 10
    //Keep in mind, number % 10 will give you the rightmost digit in your number
    sum += rem;                 //add the remainder to your running total
    number = number/10;         //divide your number by 10 so you can find
    //the next right most digit in your number
}
return sum;

答案 2 :(得分:0)

此示例尝试将数字%的所有数字相加用于获取每个while循环的最后一位数,并除以10以减少数字,并为所有数字添加总和,请参阅我的内联注释< / p>

private static int sumDigits(int number){         int sum = 0; //初始化总和         int rem; //初始化余数

    while (number > 0) {            //If number is greater than 0 true
        rem = number % 10; //remainder after division by 10 e.g 12%10=2
        sum += rem;  //sum=sum+rem               //<-- ??
        number = number/10;//reduce one number by dividing to 10         //<-- ??
    }
    return sum;
}

答案 3 :(得分:0)

让我们通过一个例子来介绍代码。我们来电话sumDigits(1234)

第一次通过while循环,number等于1234. rem = 1234 % 10,其评估为rem = 4,因为将1234除以10的余数为4(这是number)中最右边的数字。 sum += rem评估为sum += 4,因此sum的值为4.由于numberint,因此将自身的值除以10会导致123存储在number

第二次通过while循环,number等于123. rem = 123 % 10,其评估为rem = 3,因为将123除以10的余数为3(这是number)中最右边的数字。 sum += rem评估为sum += 3,因此sum的值为7,因为sum在最后一次循环迭代结束时等于4。由于numberint,因此将自身的值除以10会导致将其存储在number中。

重复这两次,你最终得到number等于零(因为int(1/10) = 0),因此,你将退出循环并{{1将包含数字中数字的总和。