gpt4 book ai didi

java - 获取空数组而不是随机生成的整数数组

转载 作者:行者123 更新时间:2023-12-03 21:55:13 25 4
gpt4 key购买 nike

我是 Java 新手,这是我学校作业的一部分。我不断收到以下输出,但我不明白为什么:

[]

我必须创建一个名为 RandomArray 的类,它采用 length(n) 并用从 0 到数组长度的随机数填充数组(长度为 n)。类还应该包含平均值、最小值和最大值的方法。

这是我到目前为止的类(class):

import java.util.*;

public class RandomArray {

private int length;
int randomNum = 0;

public void setLength(int length)
{
this.length=length;
}

//creating array of specified length
int[]a=new int [length];

public void fill() // populate array with random numbers
{
for (int i=0;i<a.length; i++)
{
Random rand = new Random();
int randomNum = rand.nextInt(a.length);
a[i]=randomNum;
}
}

public int maximum()
{
int max=1;
for(int j=0;j<a.length;j++)
{
if(a[j]>max)
max=a[j];
}
return max;
}

public int minimum ()
{
int min = 0;
for (int k=0; k<a.length; k++)
{
if(a[k]<min)
min=a[k];
}

return min;
}

public float average()
{
float sum=0;
float avg;
for (int l=0; l<a.length; l++)
{
sum=sum+a[l];
}
avg=(float)(sum/a.length);
return avg;
}

public String toString() {
return Arrays.toString(a);
}
}

这是驱动程序类:

public class RandomArrayDriver {
public static void main(String args[])
{

RandomArray arr1=new RandomArray ();
arr1.setLength(8);
arr1.fill();

System.out.println(arr1);
arr1.average();
arr1.minimum();
arr1.maximum();
}
}

我想不通。我不知道是 fill() 方法还是其他方法。

任何帮助将不胜感激!

最佳答案

数组的初始化大小始终为零。其工作原理如下:

当创建RandomArray实例时,它的int length默认值为0,然后它将初始化该数组,具体如下:

int[]a=new int [length];

由于 length 为零,因此上面的行与:

int[]a=new int [0];

并且您永远不会为数组重新分配新值。

最好在构造函数中设置数组的长度,并且保持不变:

public class RandomArray {

private int length;
int randomNum = 0;

/*
public void setLength(int length) {
this.length=length;
}
*/

//creating array of specified length
int[]a;//=new int [length];

public RandomArray(int length) {
this.length = length;
a = new int[length];
}
//rest of the code...
}

如果您希望数组具有动态长度,那么您应该对setLength方法进行一些更改以支持记住之前的元素:

public void setLength(int length) {
this.length = length;
int[] newArray = new int[length];
int backupSize = a.length > this.length? this.length : a.length;
for (int i = 0; i < backupSize; i++) {
newArray[i] = a[i];
}
a = newArray;
}

关于java - 获取空数组而不是随机生成的整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50206968/

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