gpt4 book ai didi

java数组索引越界

转载 作者:行者123 更新时间:2023-11-30 03:09:22 28 4
gpt4 key购买 nike

我正在构建一个类,它接受数字数组,并具有将其最小值、最大值和平均值输出为数字的字符串表示形式的方法。这是我的类的构造函数:

public RandomArray(int sizeOfArray)/*Constructor: gets array size and populates array with
random numbers*/
{
Random generator = new Random();

size = sizeOfArray;

for (int i = 0;i < size;i++)
{
numbers[i] = generator.nextInt(size + 1);
}
}

当我使用驱动程序测试此类时,我收到数组越界异常消息,并且此构造函数是导致该消息的原因。我无法理解我如何超出这里的数组大小。请帮忙!谢谢。

编辑 - 为了消除任何困惑,我将整个类(class)发布在下面以供引用:

public class RandomArray
{
/*A class that contains an array of random numbers and methods that output
the numbers' minimum, maximum and average values. Also includes a method
that outputs a string representation of the numbers.*/
int size, min, max;
String array;
int[] numbers = new int[size];

public RandomArray(int sizeOfArray)/*Constructor: gets array size and populates array with
random numbers*/
{
Random generator = new Random();

size = sizeOfArray;

for (int i = 0;i < size;i++)
{
numbers[i] = generator.nextInt(size + 1);
}
}

public int min_value()
{
for (int i = 0;i < size - 1;i++)
{
min = numbers[i];
for (int k = 1;k < size; k++)
{
if (numbers[k] < min)
{
min = numbers[k];
}
else
{
min = numbers[i];
}
}
}

return min;
}

public int max_value()
{
for (int i = 0;i < size - 1;i++)
{
max = numbers[i];
for (int k = 1;k < size; k++)
{
if (numbers[k] > max)
{
max = numbers[k];
}
else
{
max = numbers[i];
}
}
}

return max;
}

public double average()
{
double avg;
int sum = 0;

for (int i = 0;i < size;i++)
{
sum = sum + numbers[i];
}

avg = sum/size;

return avg;
}

public String toStringArray()//Outputs a string representation of all the numbers in the array
{
for (int i = 0; i < size;i++)
{
array = Integer.toString(numbers[i]) + " ";
}

return array;
}

}

最佳答案

您将在初始化大小变量之前初始化数组。 size 变量有一个默认值,该值被传递到数组构造函数中并将数组设置为该大小。要解决此问题,只需在设置大小变量后将数组的初始化移至构造函数中即可。

public class RandomArray
{
/*A class that contains an array of random numbers and methods that output
the numbers' minimum, maximum and average values. Also includes a method
that outputs a string representation of the numbers.*/
int size, min, max;
String array;
int[] numbers;

public RandomArray(int sizeOfArray) {
Random generator = new Random();

size = sizeOfArray;

numbers = new int[size];

for (int i = 0;i < size;i++)
{
numbers[i] = generator.nextInt(size + 1);
}
}

我还注意到字符串输出方法的一个错误。该数组将在每次迭代时被覆盖。要解决此问题,您必须将数组添加到自身。

public String toStringArray()//Outputs a string representation of all the numbers in the array
{
for (int i = 0; i < size;i++)
{
array = array + Integer.toString(numbers[i]) + " ";
}

return array;
}

关于java数组索引越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33948108/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com