首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何迭代地计算数字中的位数和- java/bluej

如何迭代地计算数字中的位数和- java/bluej
EN

Stack Overflow用户
提问于 2019-05-07 02:24:34
回答 1查看 472关注 0票数 0

我正在创建两个方法-一个递归地计算数字中数字的总和,另一个迭代计算数字的总和。

我已经创建了递归方法,并且在很大程度上我理解了求数字和的概念,但我不确定如何将其正确地放入迭代方法中。我的代码没有给出正确的输出。

代码语言:javascript
代码运行次数:0
运行
复制
  public static int iterativeDigitSum(long n) {
        if(n < 0){ 
           String err = "n must be positive. n = " + n;
         throw new IllegalArgumentException(err);
       }
     if(n == 0){
           return 0;
       }

        long sum = 0;
        long i = 0;
     while(n > 0){
             i = n % 10;
             sum = sum + n;
             n = n / 10;
       }
       int inSum = (int)sum;
       return inSum;
}

数字"n“是10,表示预期输出是1。我得到的是11。您能解释一下我做错了什么吗,以及可能如何修复它?非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2019-06-03 13:04:43

基本上,该算法包括三个步骤:

  1. 获取该数字最右边的数字。由于数字中的每个数字根据其位置具有单位、十、百、千等的等级,因此最右边的数字是除以10的余数:

将数字向上digit = n % 10

  • Sum:

通过将数字除以10,sum += digit

  • Move将所有数字向右移一位。数字将变小10倍:

n = n / 10

实际上,这将为步骤1“提供”下一个最右边的数字。

重复上述三个步骤,直到number的值变为零。

你可以通过在你的代码中添加一些“调试”信息来帮助自己可视化上面的解释:

代码语言:javascript
代码运行次数:0
运行
复制
public static int iterativeDigitSum(long n)
{
    long sum = 0;
    int i = 1;
    System.out.println("i\tn\tdigit\tsum");        
    while(n > 0) {
        long digit = n % 10;
        sum += digit;            
        System.out.println(i + "\t" + n + "\t" + digit + "\t" + sum);
        n = n / 10;
        i++;
    }
    System.out.println("\t" + n + "\t\t" + sum);
    return (int)sum;
}

请注意,i变量用于计算循环迭代次数,digit变量保存每次迭代中数字的最右侧数字。

给定数字10,BlueJ控制台的输出为:

代码语言:javascript
代码运行次数:0
运行
复制
i   n     digit   sum
1   10    0       0
2   1     1       1
    0             1

对于2019年的数字:

代码语言:javascript
代码运行次数:0
运行
复制
i   n       digit   sum
1   2019    9       9
2   201     1       10
3   20      0       10
4   2       2       12
    0               12

希望能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56010510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档