我在这个计算机科学计划数字上遇到了麻烦.我已经完成了,但是当我运行它时,它打印出0.0



我正在尝试编写一个程序,该程序将进行整数并添加数字的数字中的每个数字,计算数字中的数字数,然后平均这两个数字。

我必须使用while循环和%访问每个数字。使用/减少数字,以便您平均所有数字。

234的平均数为3.0,

10000的数字平均值为0.2,

111的平均数为1.0

这是我的代码:

import static java.lang.System.*;
        public class DigitMath
        {
           private static int countDigits( int number )
        {
            int count = 0;
            while( number > 0 )
            {
               count++;
               number = number / 10;
            }
            return count;
        }
        private static int sumDigits( int number )
        {
            double total = 0;
            while( number > 0 )
            {
               total = total + number % 10;
               number = number / 10;
            }
            return number;
        }

        public static double averageDigits( int number )
        {
            if( number > 0 )
                  return sumDigits( number ) / countDigits( number );
          return 0;
        }
    }

    // other code
    import static java.lang.System.*;
    public class Lab09e
    {
        public static void main( String args[] )
        {
            out.println(DigitMath.averageDigits(234));
       }
    }

问题是您在sumDigits方法中返回number而不是total

当您返回number时,您实际上是在返回0,这会导致averageDigits返回0/3,从而导致0.0

解决此问题:

  • 返回 total而不是 number,即在方法的执行结束时 0

  • 另外,将方法countDigits()sumDigits()的返回类型更改为double而不是INT。由于您正在计算平均值,因此应确保您的返回表达式执行该部门将返回双重。但是,将两个int划分会返回双人,但是,如果您将两个双打划分,它将返回双重。

这是固定的代码:

class DigitMath
{
    private static double countDigits( int number )
    {
        double count = 0.0;
        while( number > 0 )
        {
            count++;
            number = number / 10;
        }
        return count;
    }
    private static double sumDigits( int number )
        {
            double total = 0;
            while( number > 0 )
            {
                total = total + number % 10;
                number = number / 10;
            }
            return total;
        }

    public static double averageDigits( int number )
        {
            if( number > 0 ){
                return sumDigits( number ) / countDigits( number );
            }
          return 0.0;
        }
}

public class Lab09e
{
    public static void main( String args[] )
    {
        System.out.println(DigitMath.averageDigits(234));
    }
}

我希望这个答案对您有所帮助,如果您还有其他问题,请随时在下面发表评论。

看起来您是从编程开始的,因此有用的提示是尝试通过打印中间结果来调试。检查您的总和是否正常工作,这将有助于您解决较小的细分市场中的问题。

在您的代码中,一个非常明显的错误是,当您计算出平均值时,您将int划分为int,这将导致int。例如,4/5为0,而不是您想要的0.8。阅读此链接或参考此问题以更好地理解此问题。

您可以首先将操作数施放以将操作数施放或乘以1.0。

希望这会有所帮助!

最新更新