繁体   English   中英

如何提取数字的数字并计算它们的总和?

[英]How to extract the digits of a number and compute their sum?

     y=num%10;
     sum+=y;
     num=num/10;

     System.out.printin(sum);

我有一个符号,但我无法理解它是如何计算总和的,以及如何显示添加的数字? 例如。 234 为 9(2+3+4)

你的帖子很不清楚,所以我必须对你想要做的事情做一些假设。

我假设您正在尝试从数字中提取数字并将这些数字彼此相加。

让我们看看这是如何完成的以及它是如何工作的......

我必须假设您知道什么是变量? 很好,所以对于初学者来说,让我们假设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

顺便说一句, () s可以被丢弃:

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

看看我们如何处理“has”之后的空间?

  • System.out.println() - 和上面一样,但也移动到另一行。 例如这个:

    System.out.println("爱丽丝有"); 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.

是的,我们以相反的顺序打印数字。 如果我们坚持从左到右打印它们,我们首先必须找到<= than num10的最大幂,然后通过得到num除以10的这个幂的余数来提取数字。 但是,我会将其作为练习留给您:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM