Java 有人能解释一下while循环是如何工作的吗?

Java 有人能解释一下while循环是如何工作的吗?,java,while-loop,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

我不明白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;
}
私有静态整数位数(整数){
int sum=0;//初始化sum
int rem;//初始化余数
而(number>0){//如果number大于0,则为true

rem=number%10;//理解此代码的关键是使用两个运算符-余数运算符
%
和整数除法运算符
/

  • %
    运算符通过除以其右侧得到余数。如果是
    %10
    ,则表示“获取数字的最后一位小数”
  • /
    除法运算符丢弃余数,生成整数结果。将整数除以零将丢弃其最后一位
例如,如果您从
n=1234开始,然后执行

int d = n % 10;
int r = n / 10;
然后
d
将是
4
r
将是
123


在这一点上,应该清楚循环是如何终止的,以及在迭代过程中它是如何累积数字的总和的。

填写您注意到有问题的注释

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;

此示例尝试对数字的所有数字求和。使用%获得每个while循环的最后一个数字,然后除以10以减少数字,并为所有数字添加总和。请参阅我的内联注释

专用静态整数位数(整数编号){ int sum=0;//初始化sum 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;
}
while(number>0){//If number大于0 true
rem=number%10;//除以10后的余数,例如12%10=2

sum+=rem;//sum=sum+rem//让我们用一个示例逐步完成代码。让我们调用
sumdights(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,结果是12存储在
number


再重复两次,你会发现
number
等于零(如
int(1/10)
=0)因此,您将退出循环,并且
sum
将包含数字中的数字总和。

您知道
%
+=
/
是做什么的吗?如果您知道每个操作的作用,您可以在纸上写出一个示例并解决这个问题。“我创建了一个方法”但是你不明白它说的是什么。你确定是你写的吗?尝试一个小程序并打印结果以查看它的实际效果。通过示例学习。我不理解你是如何创建一个方法的,但不理解它是做什么的。如果这是家庭作业和(我不是在指责)你从其他地方得到了代码,请注意,教授检查软件剽窃,所以要小心:)对不起,是的,我需要编辑评论。我从一个家庭作业帮助网站复制了答案,但我仍然不确定它是如何工作的。谢谢。据我所知,如果我们从n=1234,d=4,r=123开始。循环将重复,并且d=3,r=12并继续?如果是的话,信息存储在哪里,是什么把它们加在一起的?@OhDavid想一个例子,
number
1234
。第一次迭代后
number
123
。第二次迭代后是
12
。第三次迭代后是
12
将是
1
。在第四次迭代后,它将是零,循环将在该点终止。感谢您澄清这一点。如果变量被替换为新的整数,请您解释数字是如何存储的?以及是什么添加了数字?@OhDavid我建议您检查哪些尝试解释整数算术@OhDavid
number=number/10;
是一个赋值。右边的值是用
number
的旧值计算出来的,然后旧值被替换为计算结果。哇,太好了。非常感谢你这是最清晰的解释,我没有听过。我现在完全明白了。我已经知道了而且,使用示例数据逐步了解函数/算法是了解发生了什么的最佳方式。随着您了解更复杂的数据类型,它会变得更复杂一些,但正如他们所说,学习的最佳方式是做-学习代码做什么的最佳方式就是做代码做什么!祝您学习顺利,