java—我的for循环在int数组中添加了额外的元素,我不明白为什么

aemubtdh  于 2021-07-11  发布在  Java
关注(0)|答案(2)|浏览(276)

所以我在做一个叫做“倍数数组”的小练习,我将一个数相乘,然后显示所有的倍数,直到一个数组得到答案。
例如:arrayofmultiples(7,5)➞ [7, 14, 21, 28, 35].
我的问题是,我有一个额外的元素被添加到数组中,值为0,我不明白为什么。我试着理解为什么,但我需要帮助!
这是我的密码:

public static void main(String[] args) {
    //invoke method
    int[] test = arrayOfMultiples(7, 6);
    //convert array to string to print entire thing
    System.out.println(Arrays.toString(test));
}

public static int[] arrayOfMultiples(int num, int length) {
    //array is initalised with original number
    int [] array = new int [num];
    //variable to keep num the same
    int add = num;
    // loop for adding the new multiples to the array
    for (int i = 0; i < length; i++) {
        array[i] = num;
        num += add;
    }
    return array;
}

我的输出是:[7,14,21,28,35,42,0]
谢谢您!

ssgvzors

ssgvzors1#

您的问题是,对于数组的初始化,您使用了num变量而不是length来指定数组的大小,并且由于int是一种基本数据类型,因此它不能为null,而是具有默认值0。试试这个:

public static void main(String[] args) {
    //invoke method
    int[] test = arrayOfMultiples(7, 6);
    //convert array to string to print entire thing
    System.out.println(Arrays.toString(test));
}

public static int[] arrayOfMultiples(int num, int length) {
    //array is initalised with original number
    int [] array = new int [length];
    //variable to keep num the same
    int add = num;
    // loop for adding the new multiples to the array
    for (int i = 0; i < length; i++) {
        array[i] = num;
        num += add;
    }
    return array;
}
bfhwhh0e

bfhwhh0e2#

问题是,您将数组的大小设为必须求其倍数的数字。你需要使尺寸等于 int length . 想象一下如果num= 1000 长度= 10 i、 你想找到 10 的倍数 1000 . 你所做的是,你会得到一个数组 990 元素为 0 它是一个表中每个索引的默认值 int [] .
代替

int [] array = new int [num];

具有

int [] array = new int [length];

相关问题