我之前已经知道有关此错误的问题,但我的情况与其他情况不同。我正在编写提供数据集的均值,方差和标准差的代码。编译代码时我没有遇到任何错误,但是当我尝试运行代码时,我得到如下错误:线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0 在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);
}
}
请帮助我!
答案 0 :(得分:2)
您已使用此声明声明diffrenceSquared
为零长度数组:
double [] diffrenceSquared={};
这意味着没有要分配的元素,并且每个索引都超出范围。
您尝试在diffrenceSquared
长度限定的循环中将元素分配给dataSet
,因此请将其声明为该长度。
double[] diffrenceSquared = new double[dataSet.length];
答案 1 :(得分:0)
double [] diffrenceSquared = new double[dataSet.length];
在Java中,数组不可调整大小,因此您必须从一开始就为它们提供正确的大小。
或者,您可以使用更灵活的List
。