在Java中创建简单数组时遇到问题

在Java中创建简单数组时遇到问题,java,arrays,Java,Arrays,我在用Java创建一个简单数组时遇到了一些麻烦,在这个数组中,每次循环都会生成一个随机数。我的代码如下: public class Q1 { public static void main(String[] args) { Scanner listScan = new Scanner(System.in); System.out.println("Size of list to sort?"); int j = listScan.nextInt();

我在用Java创建一个简单数组时遇到了一些麻烦,在这个数组中,每次循环都会生成一个随机数。我的代码如下:

public class Q1 {
public static void main(String[] args) {
    Scanner listScan = new Scanner(System.in);
    System.out.println("Size of list to sort?");
        int j = listScan.nextInt();


    int listArray[] = new int[j];

    for (int i = 0; i <= j; i++){
        listArray[i] = (int)(Math.random() * 100 +1);
    }

    System.out.println(listArray);


}

注意:当您尝试访问大于数组长度的索引时,会出现ArrayIndexOutofBounds异常。

您的索引太高了1个。使用

for (int i = 0; i < j; i++)

问题是,在Java中,数组是一个静态结构,当您添加元素时,它不会直接改变它的大小。您可以使用其他类型的对象,更适合作为ArrayList。

查看代码的这一部分:

int listArray[] = new int[j];

for (int i = 0; i <= j; i++){
    listArray[i] = (int)(Math.random() * 100 +1);
}
j=数组的长度,因此为3

for (int i = 0; i <= 3; i++){
j=3

使用此新代码,它将循环抛出0、1和2,与我们的数组0、1和2的大小相同。

两个问题:

你是因为循环走了1个索引位置太远了。不能将实际j值作为索引位置。最后一个索引位置比长度小1。这样做:

for (int i = 0; i < j; i++){
for (int i = 0; i < j; i++) {

将for循环更改为int i=0时的该循环;ifor (int i = 0; i <= j; i++){
for (int i = 0; i < j; i++){
for (int i = 0; i <= j; i++){
for (int i = 0; i <= 3; i++){
for (int i = 0; i < j; i++){
for (int i = 0; i < 3; i++){
for (int i = 0; i < j; i++) {
System.out.println( Arrays.toString(listArray) );

// or iterate through the array

for (int i = 0; i < listArray.length; i++) {
    System.out.println(listArray[i]);
}