【问题标题】:I want to average the numbers inputted into the ArrayList, however it only calculates average as 0.0 [closed]我想平均输入到 ArrayList 中的数字,但它只计算平均值为 0.0 [关闭]
【发布时间】:2017-12-07 21:36:08
【问题描述】:

它的总和非常好,但是无论我输入什么数字,它都会将值平均为 0.0。如何让它输出正确的平均值?

import java.util.Scanner;
import java.io.*;
import java.util.ArrayList;

public class Calculation {
    static Toolkit tools = new Toolkit();
    public static void main(String [] args) {
        double average = 0.0;
        double sum = 0;
        int i =0;
        int num = 0;
        int nElements = 0;
        Scanner console = new Scanner(System.in);

        ArrayList<Integer> value = new ArrayList<Integer>();
        System.out.println("Enter value: ");
        num = console.nextInt();
        while(num != 0) {
            value.add(new Integer(num));
        }

        for(i = 0; i < value.size(); i++) {
             sum += value.size();
        }
        average = sum / value.size();
        System.out.println("Number of values read: " + value.size());
        System.out.println("Values sum: " + sum + "Values average: " + 
                            average);
        System.exit(0);
    }
}

【问题讨论】:

  • while(num != 0) { value.add(new Integer(num)); } 这将是一个无限循环,因为您一旦进入其中就不会更改num,因此条件永远不会变为假。我不确定您如何验证总和是否如您声称的那样正常工作。
  • 是的,你是对的,我忘了在这段代码中添加num = console.nextInt();。但是,在我添加它之后,它会将数字相加,但仍将平均值计算为 0。
  • 当我运行添加了该行的代码时,总和不正确,但不正确总和的平均值是正确的。如果我输入 5、5、5、0,我得到的总和为 9.0,平均为 3.0。同样,我不确定您如何看待您所看到的,因为您发布的代码与您描述的不符。
  • 这是一条奇怪的线:sum += value.size()
  • 是的,您不想将列表的大小添加到总和中,而是要将当前值添加到总和中sum += value.get(i)

标签: java arraylist average


【解决方案1】:

现在,循环只会在您第一次输入0 时结束,否则会导致无限循环。相反,您需要像这样读取循环中的下一个整数:

while(num != 0) {
    value.add(new Integer(num));
    num = console.nextInt();  // add this line
}

另外,改变这个:

sum += value.size();

到这里:

sum += value.get(i);

因为您希望将ArrayList 中的数字减少为单个值,而不是在每次迭代时对ArrayList 的大小求和。

【讨论】:

    【解决方案2】:

    青峰说的没错。然而,这不是唯一的问题。在您的 for 循环中,您将 Arraylist 的大小添加到“sum”变量中。您应该添加它所持有的值,即将它们相加。

    double average = 0.0;
        double sum = 0;
        int i = 0;
        int num = 0;
    
        Scanner console = new Scanner(System.in);
    
        ArrayList<Integer> value = new ArrayList<Integer>();
        System.out.println("Enter value: ");
        num = console.nextInt();
        while (num != 0) {
            value.add(new Integer(num));
            num = console.nextInt();
        }
    
        for (i = 0; i < value.size(); i++) {
            sum += value.get(i);
        }
        average = sum / value.size();
        System.out.println("Number of values read: " + value.size());
        System.out.println("Values sum: " + sum + "Values average: " + average);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-14
      • 1970-01-01
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多