我不明白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;
}
答案 0 :(得分:1)
理解这段代码的关键是使用两个运算符 - 余数运算符%
和整数除法运算符/
。
%
运算符通过右侧除以产生余数。如果是% 10
,则表示“获取数字的最后一位十进制数”/
除法运算符丢弃余数,产生整数结果。将整数除以零会丢弃其最后一位数。例如,如果您从n = 1234
开始并执行
int d = n % 10;
int r = n / 10;
然后d
为4
,r
为123
。
此时应该清楚循环如何进行终止,以及它在迭代过程中如何累积数字的总和。
答案 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.由于number
为int
,因此将自身的值除以10会导致123存储在number
。
第二次通过while
循环,number
等于123. rem = 123 % 10
,其评估为rem = 3
,因为将123除以10的余数为3(这是number
)中最右边的数字。 sum += rem
评估为sum += 3
,因此sum
的值为7,因为sum
在最后一次循环迭代结束时等于4。由于number
是int
,因此将自身的值除以10会导致将其存储在number
中。
重复这两次,你最终得到number
等于零(因为int(1/10)
= 0),因此,你将退出循环并{{1将包含数字中数字的总和。