y=num%10;
sum+=y;
num=num/10;
System.out.printin(sum);
我有一个符号,但我无法理解它如何计算总和,以及如何显示添加的数字? 例如。 234为9(2 + 3 + 4)
答案 0 :(得分:0)
你的帖子很不清楚,所以我必须对你想要做的事做一些假设。
我假设您正在尝试从数字中提取数字并将这些数字相互添加。
让我们看看这是如何完成的以及它是如何运作的......
我必须假设你知道变量是什么?很好,所以首先,让我们假设num
是一个保存你的号码的变量,假设我们有:
int num = 1234;
另外,假设我们有一个名为sum
的变量来存储我们的数字总和。由于这是一笔总和,所以从0
开始是件好事。因此:
int sum = 0;
让我们看看我们的工具箱中有哪些工具:
/
运算符执行的积分除法。请注意,这是积分除法,这意味着它会舍入结果。在数学中我们有1234/10=123.4
;因此,由于我们的/
运算符将结果向下舍入,因此在Java中我们将获得123
。因此,将数字除以10
会产生丢弃其最右边数字的效果。%
运算符执行。当然,1234
除10
之后的剩余部分是4
。您可以看到1234%10
如何说明检索最右边的数字?我们现在可以应用两个运算符将第一个数字添加到总和中并从我们的数字中丢弃这个数字:
sum = (sum + num % 10);
num = (num / 10);
执行上述两项操作后,我们将变量sum
持有4
,变量num
持有123
。
顺便说一句,()
可以被丢弃:
sum = sum + num % 10;
num = num / 10;
此外,whatever = whatever / 10
可简化为whatever /= 10
,+
也相同:
sum += num % 10;
num /= 10;
显然,我们必须重复此过程,直到没有更多的数字要丢弃。显然,当且仅当num
等于0
时,才会有更多数字。 (还记得积分除法是如何舍入的吗?当我们有一个最后一个数字要丢弃时会发生什么,比如num=5
?在这种情况下,num/=10
会0.5
,但是因为我们正在向下舍入,它会在0
中存储num
。)
我想你熟悉循环。 (如果没有,我必须要求你阅读它们)。那么,我们有一个清晰的想法。简洁的循环:
while(num != 0) {
sum += num % 10;
num /= 10;
}
当此循环停止时,变量sum
将保留num
的所有数字的总和,在本例中为1+2+3+4=10
。
编辑:印刷来了。
再次,让我们回顾一下工具箱中的工具:
System.out.print()
- 这会打印您放在()
中的所有内容。请注意,如果要打印文字文本,则必须将其放在""
中,否则编译器会尝试确定您的文本是否为变量名称。例如,如果你写:
System.out.print(“爱丽丝有”); System.out.print(“一只猫”);
您将得到以下输出:
Alice has a cat
看看在“有”之后我们如何关注这个空间?
System.out.println()
- 如上所述,但也会移到另一条线上。例如:
System.out.println(“Alice has”); System.out.println(“一只猫”);
将打印:
Alice has
a cat
我们现在可以将这些指令添加到循环中以打印出每个数字:
System.out.print("The digits of ");
System.out.print(num);
System.out.print(" sum to: ");
while(num != 0) {
sum += num % 10;
System.out.print(num%10); System.out.print("+");
num /= 10;
}
System.out.print("="); System.out.print(sum); System.out.println(".");
哦,等等,有一个问题。这打印:
The digits of 1234 sum to: 4+3+2+1+=10.
显然,如果我们正在处理最后一位数字,我们不能添加最后一个+
。同样,我必须希望你熟悉if
:
System.out.print("The digits of ");
System.out.print(num);
System.out.print(" sum to: ");
while(num != 0) {
sum += num % 10;
System.out.print(num%10);
num /= 10;
if(num != 0) System.out.print("+");
}
System.out.print("="); System.out.print(sum); System.out.println(".");
这最终会产生所需的结果并打印出来:
The digits of 1234 sum to: 4+3+2+1=10.
是的,我们按相反的顺序打印数字。如果我们坚持从左到右打印它们,我们首先必须找到10
的最大幂<=
而不是num
,然后通过获得除法的余数来取代数字num
的这种力量10
的{{1}}。但是,我会将此作为练习留给你:)