【问题标题】:Arithmetic mean in javajava中的算术平均值
【发布时间】:2019-10-17 06:57:02
【问题描述】:

问题陈述

需要找到用户输入的数字的算术平均值。

约束

  • 我们不能要求用户定义/共享用户计划输入的“NUMBERS”个数字,即我们不能要求用户说出他要输入多少个数字。
  • 如果用户输入 -1,则应停止输入并显示算术平均值。
  • 我们应该只要求用户输入要计算算术平均值的数字。喜欢:用户输入 2 4 7 10 -1 所以我们需要计算 2,4,7,10 的算术平均值并显示结果。

代码

public static void main(String[] args) {
    // TODO Auto-generated method stub

    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int sum = 0;

    do {
        System.out.println("Value is :" + n);
        count++;
        sum = sum + n;  
    }while ( n != -1);

}

它进入无限循环,我也尝试过使用 if/else 但我没有工作。请帮忙。

对于输入:

3
9
4
-7
0
2
-1

算术平均值应计算为 3,9,4,7,0,2,29 即 1.8

【问题讨论】:

  • 您需要在每次迭代或循环中重新定义n

标签: java


【解决方案1】:

试试这个:

    Scanner sc = new Scanner(System.in);

    int sum = 0;
    int count = 0;
    int n = 0;

    do {
        System.out.println("Enter next number(-1 to exit): ");
        n = sc.nextInt();
        System.out.println("Value is :" + n);

        if(n != -1)
        {
            count++;
            sum = sum + n; 
        }

    }while ( n != -1);

    sc.close();
    System.out.println("Mean is: " + (double) sum/count);
}

您需要将sc.nextInt(); 移到循环中,以便您可以继续输入值。我还添加了一个if 语句,因此-1 不会用于平均值。

【讨论】:

  • 您需要将sum 和/或count 转换为double,否则您将进行整数除法(将结果截断为整数)。
【解决方案2】:

您正在读取“n”作为 while 的输入,然后 n 始终具有第一个值并且循环是无限的。

【讨论】:

    【解决方案3】:

    你只需要不断传递整数,否则 n 永远是第一个输入的值。

    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    int sum = 0; 
    do { 
        System.out.println("Value is :" + n); 
        count++;
        sum = sum + n;
        n = sc.nextInt();
    }while ( n != -1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 2015-12-01
      • 1970-01-01
      • 2016-04-20
      相关资源
      最近更新 更多