用java计算平均值

用java计算平均值,java,for-loop,average,Java,For Loop,Average,我的程序读取一个文件并将所有内容放入一个名为values2的字符串数组中。数组元素17 values2[17]包含我需要的值。我将该数组元素转换为一个双精度数组,以便计算平均值。程序应该取值[17]中的前3个值,然后除以3来计算平均值,但它只是将相同的值打印3次,而不是先加后除。 你知道我做错了什么吗?你没有对我做任何事 double Hg = Double.parseDouble(values2[17]); for (int i = 0; i < 3; i++) { double

我的程序读取一个文件并将所有内容放入一个名为values2的字符串数组中。数组元素17 values2[17]包含我需要的值。我将该数组元素转换为一个双精度数组,以便计算平均值。程序应该取值[17]中的前3个值,然后除以3来计算平均值,但它只是将相同的值打印3次,而不是先加后除。
你知道我做错了什么吗?

你没有对我做任何事

double Hg = Double.parseDouble(values2[17]);
for (int i = 0; i < 3; i++) {
    double Avg = (Hg + Hg + Hg) / 3;
    System.out.println(Avg);
}

当前,您将整个数组添加到自身中3次,然后进行除法,但您需要在数组中添加三个想法,然后除以三


如果我明白你在做什么,逗号分隔的字符串值,它可以像

double Avg = values2[0] + values2[1] + values2[2] / 3
哪个输出

public static void main(String[] args) {
    String[] values = new String[18];
    values[17] = "1.0, 2.0, 4.0";
    double total = 0;
    int count = 0;
    for (String v : values[17].split(",")) {
        if (v != null) {
            total += Double.valueOf(v.trim());
            count++;
        }
    }
    double avg = total / ((double) count);
    System.out.println("The average of " + values[17] + " is " + avg);
}
如果values2[17]是一个类似于2 5 7的字符串,那么您需要分别解析它们

The average of 1.0, 2.0, 4.0 is 2.3333333333333335
另一方面,如果您有一个像567这样的字符串,并且您想要单独的值,那么您可以将其拆分为一个char数组,然后添加int值吗

String[] nums = valus2[17].split(" ");
double d1 = Double.parseDouble(num[0]);
double d2 = Double.parseDouble(num[1]);
double d3 = Double.parseDouble(num[3]);

double average = (d1 + d2 + d3) / 3;

不改变你试图平均的值?等等,那么值2[17]中到底是什么?一个双精度字符串?您的逻辑是3x/3,也就是x,所以您可以只打印HgHg+Hg+Hg/3==Hgfirst 3个值,这些值在值[17]中,这到底是什么意思。值2[17]是否以某种方式包含多个值?
String[] nums = valus2[17].split(" ");
double d1 = Double.parseDouble(num[0]);
double d2 = Double.parseDouble(num[1]);
double d3 = Double.parseDouble(num[3]);

double average = (d1 + d2 + d3) / 3;
String value = "567"     // value2[17]
char[] digits = value.toCharArray();

int total = 0;
for (char c : digits){
    total += Integer.parseInt(String.valueOf(c));
}
double average = total / new Double(digits.length);