如何计算数组输入的平均值?

时间:2017-10-10 15:54:12

标签: java arrays average

我刚刚开始编程Java,而且我遇到了一个让我想要破解问题的问题。它开始变得烦人,我现在感觉非常愚蠢。

任务是编写一个程序,要求将五个数字输入到数组中(是的,不能使用列表),然后计算输入的五个数字的平均值。

我哪里错了?

我的当前代码计算每次输入后的平均值。我想在它们全部插入之后再这样做,否则有什么意义呢?

非常感谢所有帮助,你相信我!

以下是代码:

import java.util.Scanner;

public class Uppg3 {
public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    int[] numbers = new int[5];

    int sum = 0;
    for (int i = 0; i < numbers.length; i++)
    {
        System.out.println("enter a number: ");
        numbers[i] = input.nextInt();
        sum = numbers[i];

    }

    double average = sum / 5;

    System.out.println("Average is " + average);
    input.close();
}
}

5 个答案:

答案 0 :(得分:0)

你应该在一个方法中封装这样的东西。

您可以通过将所有数字存储在一个数组中并同时传递它们,或者保持一个正在运行的计数并根据请求返回它来一次处理所有数字。

public class StatisticsUtils {
    private double sum;
    private int numValues;

    public StatisticsUtils() {
        this.sum = 0.0;
        this.numValues = 0;
    }

    public void addValue(double value) {    
        this.sum += value;
        ++this.numValues;
    }

    public double getAverage() {
        double average = 0.0;
        if (this.numValues > 0) {
            average = this.sum/this.numValues;
        }
        return average;
    }

    public static double getAverage(double [] values) {
        double average = 0.0;
        if ((values != null)  && (values.length > 0)) {
            for (double value : values) {
                average += value;
            }
            average /= values.length;      
        }
        return average;
    }
}

答案 1 :(得分:0)

查看此for循环

for (int i = 0; i < numbers.length; i++)
{
    System.out.println("enter a number: ");
    numbers[i] = input.nextInt();
    sum = numbers[i];

}

您正在将它添加到数组中,但您可以将总和设置为它们输入的内容。例如,如果我输入5 3 2,则数组中将包含5 3 2,但总和将设置为2.如果我只输入5 3,则将其设置为3.

一种解决方案是使用+ =,这样就可以将该数字添加到当前值(从0开始)。同样重要的是要注意,当你除以两个整数(sum和5)时,它不会给你一个小数。这可以通过使用5.0或将sum转换为double来解决。

答案 2 :(得分:0)

您的代码目前只是在循环的每次迭代中为sum分配不同的值。您需要将sum = numbers[i];更改为sum += numbers[i];(相当于sum = sum + numbers[i];)。您还需要将int sum = 0;更改为double sum = 0,以便您的答案为小数。

答案 3 :(得分:0)

好吧,它适用于&#34; + =&#34;,爱你Chris Phelps。那和改变:

 int sum = 0;

double sum = 0;

使答案有小数。非常感谢你们!我的胸部已经抬起了一个重量:)。

答案 4 :(得分:0)

计算阵列输入平均值的代码

package com.imedxs;

import java.util.Scanner;

public class Test {

public static void main(String args[])
{
    Scanner sc=new Scanner(System.in);

    System.out.println("for calculating average of array");
    int n=0;
    int b=sc.nextInt();
    int[] numbers = new int[b];

    int sum = 0;
    for (int i = 0; i < b; i++)
    {
        System.out.println("enter a number: ");
        numbers[i] = sc.nextInt();
        sum += numbers[i];
        n++;

    }

    double average = sum / n;

    System.out.println("Average is " + average);

   }
}