我知道以前有人问过关于这个错误的问题,但我的情况与其他所有人不同。我正在编写计算数据集的均值、方差和标准差的代码。在编译代码时我没有得到任何错误,但是当我尝试运行代码时,我得到了一个类似这样的错误: Exception in thread "main“java.lang.ArrayIndexOutOfBoundsException: 0 at Main.main(Main.java:25)
/**
* Main class of the Java program.
*
*/
public class Main {
public static void main(String[] args) {
int sum = 0;
double xBar = 0;
double [] dataSet = {1,2,3,4}; // add data here
int xLenght = dataSet.length;
double [] diffrenceSquared={};
double devSum = 0;
double variance = 0;
double standardDeviation = 0;
for (double n: dataSet)
{
sum += n;
}
xBar = sum/xLenght;
for (int i=0; i<dataSet.length; i++)
{
diffrenceSquared[i] = (xBar-dataSet[i])*(xBar-dataSet[i]);
}
for (double n:dataSet)
{
devSum += n;
}
variance = devSum/xLenght;
standardDeviation = java.lang.Math.sqrt(variance);
System.out.println("x bar ="+xBar);
System.out.println("variance ="+ variance);
System.out.println("Standard Deviation ="+ standardDeviation);
}
}请帮帮我!
发布于 2015-05-28 04:34:23
您已使用以下声明将diffrenceSquared声明为零长度数组:
double [] diffrenceSquared={};这意味着没有要分配的元素,并且每个索引都超出了界限。
您试图在一个以dataSet长度为界限的循环中将元素赋值给diffrenceSquared,因此将其声明为该长度。
double[] diffrenceSquared = new double[dataSet.length];发布于 2015-05-28 04:33:46
double [] diffrenceSquared = new double[dataSet.length];在Java中,数组的大小是不可调整的,因此您必须从一开始就为它们指定正确的大小。
或者,您可以使用更灵活的Lists。
https://stackoverflow.com/questions/30492583
复制相似问题