我有一个构造函数,它接受数组长度作为参数,并使用另一种方法用随机数填充数组。
public class RandomArray {
public RandomArray(int length) {
array = new int[length];
for (int index = 0; index <= array.length; index++) {
array[index] = randomFill();
}
}
public int randomFill()
{
Random rand = new Random();
int num = rand.nextInt(length);
return num;
}
}
它可以编译,但不确定如何使用构造函数打印数组中的值吗?这就是我尝试过的
import java.util.Arrays;
public class ArrayGenerator {
public static void main(String[] args) {
RandomArray array = new RandomArray(5);
for (int index = array.length -1; index >= 0; index++)
System.out.println(array[index]);
System.out.println(Arrays.toString(array));
}
}
答案 0 :(得分:1)
您的基本问题是您永远不会将数组存储在RandomArray类中。尝试做这样的事情:
public class RandomArray {
int myArray [];
public RandomArray(int length) {
myArray = new int[length];
for (int index = 0; index <= array.length; index++) {
myArray[index] = randomFill();
}
}
public int randomFill()
{
Random rand = new Random();
int num = rand.nextInt(length);
return num;
}
public int [] getArray(){
return this.myArray;
}
}
然后在您的main方法中,可以通过调用getArray
方法并对其进行迭代来获取此数组。这根本不是实现此目的的最佳方法,但这就是它在您的框架内如何工作的方式。
编辑:正如评论和其他答案中所指出的那样,需要固定main方法中的for循环,并从0迭代到array.length,而不是现在设置的那样。
答案 1 :(得分:1)
使用下面的代码片段。有几个选项可以打印内容。由于您已经说过需要在构造函数中打印数组内容,因此我在与数字分配相同的while循环中插入了一条print语句。如果需要,可以有两个单独的循环。分别用于编号分配和编号打印。
public class RandomArray {
int newArr[];
public RandomArray(int size) {
newArr= new int[size];
int counter=0;
while(newArr.size()>counter){
newArr[counter] = randomFill();
System.out.println(newArr[counter]);
counter++;
}
}
public int randomFill()
{
Random rand = new Random();
int num = rand.nextInt(length);
return num;
}
}
答案 2 :(得分:0)
首先,如Sun所述,您将需要声明一个数组。但是,此后,您可以使用for循环来打印每个元素。
但是,您将需要稍微更改循环的条件
for(int index = array.length - 1; **index >= 0**; index++)
是不正确的,因为循环将继续迭代,因为您不断添加到索引并且没有设置上限。我建议您将该行更改为
for(int index = 0; index <= array.length; index++)