使用While循环查找数字的平均值

时间:2017-11-11 04:30:11

标签: java

我知道这是基础问题,但我无法解决这个问题,所以我需要你的帮助.. 我试图通过使用While循环来找到数字(用户输入)的数字的平均值,例如,数字789的数字的平均值是(7 + 8 + 9 +)/ 3 = 8。 任何人都可以帮我这个..?非常感谢。

overridden

3 个答案:

答案 0 :(得分:5)

你的问题与mod有关。您可以按如下方式重写代码。修改不仅可以纠正错误,还可以进行标准化。您需要将平均值更改为浮动或加倍。

import java.util.Scanner;

public class AVE {
    public static void main(String[] args) {
        int number;
        float average = 0;
        Scanner kb = new Scanner(System.in);
        System.out.println("what is your number?");
        number = kb.nextInt();
        average = avDigits(number);
        System.out.println("The average is " + average);
    }
    private static float avDigits(int number) {
        int digits = 0;
        float sum = 0.0F;
        while (number > 0) {
            digits += 1;
            sum += number % 10;
            number /= 10;
        }
        return (sum / digits);
    }
}

答案 1 :(得分:1)

您正在使用digits而不是num的mod。更改while循环如下:

 while (num > 0)
{
  digits += 1;
  sum += num % 10;  //<< Take mod of num here
  num/=10;
}

答案 2 :(得分:1)

import java.util.Scanner; 
class AVE
{

  static int digits = 0;
  static float average =0;
  static int sum =0;
  static int number;


  public static void main (String[]args)
  {
    Scanner kb = new Scanner (System.in);
    System.out.println("what is your number?");
    number = kb.nextInt();
    avDigits();
    System.out.println("The average is " + average);
  }

  public static void avDigits()
  {
    int num = number;
    while (num > 0)
    {
      digits += 1;
      sum += num % 10;  /*Do the modulo of num instead of digit. Since doing the modulo of num will give you the last digit*/
      num/=10;
    }

    average = ((float)sum/digits);  //average can be in decimal also

   }
}