计算java中双精度矢量的平均值

时间:2016-02-10 19:30:24

标签: java vector sum average

我在计算双精度矢量的平均值时遇到问题。这是我的代码:

import java.util.Scanner;
import java.util.Vector;
public class MediaVettore {
public static void main ( String [] args ) {
System.out.println("Insert a sequence of double numbers (the program ends when the input is 0,0):");
@SuppressWarnings("resource")
Scanner input = new Scanner ( System .in );
Vector < Double > v = new Vector < Double >();
double n;
double sum = 0;
double average;
do {
n = input . nextDouble ();
if(!v.isEmpty()) {
for(int i=0; i<=v.size()-1; i++) {
    sum += v.get(i);
  }
}
  average=sum/v.size();
if (n !=0) v. add (n);
} while (n !=0);
System.out.println("Average = " + average);
System.out.println(v.size());
System.out.println(sum);
}
}

它没有正确总结,我不明白为什么。你能给我一点帮助吗? v.get(i)应该在正确的位置获得想要的双倍,不是吗?

编辑谁需要它: for-each下面的解决方案

for(double i : v) {
    sum += i;
}

1 个答案:

答案 0 :(得分:2)

您应该在不同的循环中将元素放入向量中,而不是计算平均值。现在你正试图同时做这两件事,这是一种混乱。

do {
n = input . nextDouble ();
if (n !=0) v. add (n);
} while (n !=0);
for(int i=0; i<=v.size()-1; i++) {
    sum += v.get(i);
  }
}
average=sum/v.size();

...虽然您的代码还应该改进其他一些事项,例如使用ArrayList而不是Vector,这已被弃用近20年,并使用了for-each循环而不是for循环索引。