Java打印数组内容

时间:2018-08-22 15:49:55

标签: java arrays printing

我有一个构造函数,它接受数组长度作为参数,并使用另一种方法用随机数填充数组。

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));
}
}

3 个答案:

答案 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++)