Java 我的for循环正在我的int数组中添加额外的元素,我不';我不明白为什么

Java 我的for循环正在我的int数组中添加额外的元素,我不';我不明白为什么,java,arrays,for-loop,Java,Arrays,For Loop,所以我在做一个叫做“倍数数组”的小练习,我将一个数字相乘,并显示该数字的所有倍数,直到一个数组得到答案为止 例如:arrayOfMultiples(7,5)➞ [7,14,21,28,35] 我的问题是,我的数组中添加了一个值为0的额外元素,我不明白为什么。我试图理解为什么,但我需要帮助 这是我的代码: public static void main(String[] args) { //invoke method int[] test = arrayOfMultiples(7,

所以我在做一个叫做“倍数数组”的小练习,我将一个数字相乘,并显示该数字的所有倍数,直到一个数组得到答案为止

例如: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;
}
publicstaticvoidmain(字符串[]args){
//调用方法
int[]测试=阵列f多重(7,6);
//将数组转换为字符串以打印整个内容
System.out.println(Arrays.toString(test));
}
公共静态int[]数组多重数(int num,int length){
//数组是用原始数字初始化的
int[]数组=新的int[num];
//变量以保持num相同
int add=num;
//用于将新倍数添加到阵列的循环
for(int i=0;i
我的输出是:[7,14,21,28,35,42,0]


谢谢大家!

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

publicstaticvoidmain(字符串[]args){
//调用方法
int[]测试=阵列f多重(7,6);
//将数组转换为字符串以打印整个内容
System.out.println(Arrays.toString(test));
}
公共静态int[]数组多重数(int num,int length){
//数组是用原始数字初始化的
int[]数组=新的int[length];
//变量以保持num相同
int add=num;
//用于将新倍数添加到阵列的循环
for(int i=0;i
问题在于,您将数组的大小设置为必须找到倍数的数字。您需要使大小等于
int length
。想象一下,如果num=
1000
和length=
10
,也就是说,您希望找到
10
的倍数
1000
。这样做的方式是,您将得到一个数组,其中
990
元素为
0
,这是在
int[]
中的每个索引处指定的默认值

替换

int [] array = new int [num];


int[]数组=新的int[num]
我想您是想在这里使用另一个变量
int[]array=newint[length]
。您正在将数组初始化为size
num
而不是size
length
int [] array = new int [length];