【问题标题】:Calculate average of user input using for each使用每个计算用户输入的平均值
【发布时间】:2014-09-20 18:23:02
【问题描述】:

您好,我是 Java 新手,正在尝试做一些练习来熟悉它。我正在尝试使用 for each 或增强的 for 循环来计算用户输入数字的总和和平均值。我所做的是将数字存储在一个数组中。你能检查我的代码是否正确。

Scanner scanner = new Scanner(System.in);

double inputNum;
double sum= 0;
int counter;

System.out.println("How many entries would you like input");
int entry = scanner.nextInt();

for (counter = 0; counter< entry; counter++){

    double [] numbers = new double[entry]; 
    System.out.println("Please input number " + (counter +1));
    numbers[counter] = scanner.nextDouble();

    for (double x : numbers[counter]) {
        x += sum;
    }

    System.out.println("The total sum is: " + sum);
    double average = sum/entry;
    System.out.println("The total average is: " + average);
}

【问题讨论】:

  • for-each 不适用于表达式类型double,需要使用数组或者一些Iterable
  • 我正在检查是否可以使用 for each 循环

标签: java arrays for-loop


【解决方案1】:

您不需要内部循环。将每个输入存储在数组中后,您可以将其添加到总和中。

此外,您应该在外循环之外分配一次数组,而不是在每次迭代中。

double [] numbers = new double[entry];
for (counter = 0; counter< entry; counter++){       
    System.out.println("Please input number " + (counter +1));
    numbers[counter] = scanner.nextDouble();
    sum+= numbers[counter];
}
System.out.println("The total sum is: " + sum);
double average = sum/entry;
System.out.println("The total average is: " + average);

【讨论】:

  • 但是不需要数组。只需跟踪总和。
  • @nmore 这也是正确的,但也许后面还有额外的代码需要数组。
【解决方案2】:

将求和和平均逻辑放在循环之外。这应该有效:

double [] numbers = new double[entry]; 
for (counter = 0; counter< entry; counter++){
  System.out.println("Please input number " + (counter +1));
  numbers[counter] = scanner.nextDouble();       
  sum += numbers[counter];
}

System.out.println("The total sum is: " + sum);
double average = sum/entry;
System.out.println("The total average is: " + average);

【讨论】:

    【解决方案3】:

    您不能将 for-each 与扫描仪一起使用。此外,您无需存储任何东西。只需跟踪总和即可。

    Scanner scanner = new Scanner(System.in);
    
    System.out.println("How many entries would you like input?");
    int numEntries = scanner.nextInt();
    
    double sum = 0;
    for (counter = 1; counter <= numEntries; counter++) {
        System.out.println("Please input number " + counter + ": ");
        sum += scanner.nextDouble();
    }
    System.out.println("The total sum is: " + sum);
    System.out.println("The average is: " + sum / numEntries);
    

    【讨论】:

      【解决方案4】:

      相同的代码,循环外的平均值和无用的数组被删除:

      Scanner scanner = new Scanner(System.in);
      
      double sum = 0;
      
      System.out.println("How many entries would you like input");
      int entry = scanner.nextInt();
      
      for (int counter = 1; counter <= entry; counter++) {
          System.out.println("Please input number " + counter);
          sum += scanner.nextDouble();
      }
      
      System.out.println("The total sum is: " + sum);
      double average = sum / entry;
      System.out.println("The total average is: " + average);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-16
        • 1970-01-01
        • 2021-04-30
        • 1970-01-01
        • 2016-03-28
        • 1970-01-01
        相关资源
        最近更新 更多