我是Java新手,这是我上学的一部分。我一直得到以下输出,我无法弄清楚原因:
[]
我必须创建一个名为RandomArray的类,它取一个长度(n)并用从0到数组长度的随机数填充一个数组(长度为n)。类还应包含平均值,最小值和最大值的方法。
这是我到目前为止的课程:
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()方法还是别的。
非常感谢任何帮助!
答案 0 :(得分:4)
数组始终以零大小初始化。以下是它的工作原理:
当创建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
方法进行一些更改,以支持记住以前的元素:< / p>
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;
}
答案 1 :(得分:1)
private int length;
int[]a;
public void setLength(int length)
{
this.length=length;
a = new int [length];
}
在构造函数中声明并初始化数组a
。
你每次都在创建一个长度为零的数组。
答案 2 :(得分:1)
当你调用setLength()时,它不会以任何方式修改你的数组。您可以像这样修改相同的方法,并获得所需的答案:
public void setLength(int length) {
a = new int [length];
}