Java 有人能解释一下while循环是如何工作的吗?
我不明白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
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我建议您检查哪些尝试解释整数算术@OhDavidnumber=number/10;
是一个赋值。右边的值是用number
的旧值计算出来的,然后旧值被替换为计算结果。哇,太好了。非常感谢你这是最清晰的解释,我没有听过。我现在完全明白了。我已经知道了而且,使用示例数据逐步了解函数/算法是了解发生了什么的最佳方式。随着您了解更复杂的数据类型,它会变得更复杂一些,但正如他们所说,学习的最佳方式是做-学习代码做什么的最佳方式就是做代码做什么!祝您学习顺利,