由于某种原因,我的数组的大小无效,我不知道应该如何更改NextIndex
来解决此问题。大小应该是动态的,将NextIndex
更改为1对它没有帮助。
/**
* Code for E7.9
* @Michael Goedken
*/
public class DataSet
{
// Implmentation
int nextIndex = 0;
double[] list = new double[1];
public static void main (String args[])
{
DataSet data = new DataSet(5);
data.add(3.5);
data.add(7.9);
data.add(15.2);
data.add(-7.3);
System.out.println("Sum: " + data.getSum());
System.out.println("Expected: 19.3");
System.out.println("Average: " + data.getAverage());
System.out.println("Expected: 4.825");
System.out.println("Maximum: " + data.getMaximum());
System.out.println("Expected: 15.2");
System.out.println("Minimum: " + data.getMinimum());
System.out.println("Expected: -7.3");
}
构造一个空数据集。 @param maximumNumberOfValues此数据集可以容纳的最大值
public DataSet(int maximumNumberOfValues)
{
double[] list = {maximumNumberOfValues};
}
如果数组中有空间,则向数据集添加数据值。 @param值数据值
public void add(double value)
{
list[nextIndex] = value;
nextIndex++;
}
获取添加数据的总和。 @return数据总和,如果没有添加数据则为0
public double getSum()
{
double sum = 0;
for (double i : list)
sum += i;
return sum;
}
获取添加数据的平均值。 @return数据的平均值,如果没有添加数据则为0
public double getAverage()
{
double sum = 0;
double avg = 0;
for (double i = 0;i<list.length;i++)
sum += i;
avg = sum/list.length;
return avg;
}
获取输入的最大值。 @return数据的最大值 注意:如果未输入任何值,则返回-Double.MAX_VALUE。
public double getMaximum()
{
double max = list[0];
for (int i = 1; i < list.length; i++)
{
if (list[i] > max)
{
max = list[i];
}
}
return max;
}
获取输入的最小值。 @return数据的最小值 注意:如果未输入任何值,则返回Double.MAX_VALUE。
public double getMinimum()
{
double min = list[0];
for (int i = 1; i < list.length; i++)
{
if (list[i] < min)
{
min = list[i];
}
}
return min;
}
}
答案 0 :(得分:1)
public DataSet(int maximumNumberOfValues) {
double[] list = {maximumNumberOfValues};
}
这里,list
是一个局部变量声明(并且只有一个元素),它与同名的成员变量无关。
此表达式{maximumNumberOfValues}
实际上意味着&#34;使用值maximumNumberOfValues
&#34;
改为为成员变量赋值,其中该值是具有所需元素数的新数组:
list = new double[maximumNumberOfValues];
答案 1 :(得分:1)
更改
int nextIndex = 0;
double[] list = new double[1];
到
int nextIndex = 0;
double[] list;
从
更改构造函数public DataSet(int maximumNumberOfValues)
{
double[] list = {maximumNumberOfValues};
}
到
public DataSet(int maximumNumberOfValues)
{
list = new double[maximumNumberOfValues];
}
答案 2 :(得分:0)
double[] list = {maximumNumberOfValues};
这不是你在Java中创建和分配大小为maximumNumberOfValues
的数据。
您应该像这样分配:double[] list = new double[maximumNumberOfValues];
更新:此外,double[] list = {maximumNumberOfValues};
应该在构造函数中声明为list = new double[maximumNumberOfValues]
,否则您将声明一个局部变量。您应该在构造函数之外将list
声明为private
。
答案 3 :(得分:0)
我不太确定你的问题是什么。
int nextIndex = 0;
double[] list = new double[1];
我可能错了......但你的数组总是大小为1。 正如Ervin Szaligyi所说 - &gt;你必须以不同的方式创建数组