我的数组只打印0s - java

时间:2018-06-08 00:03:15

标签: java arrays

我正在用java编写一个关于必须从程序中提取四的倍数的程序。该计划如下:

    import java.util.Random;
    import java.util.Arrays;
    public class Assignment8
    {
        public static void main ( String [] args )
        {
            int i = 0;
            int [] array1 = new int[100];  // creating an array of 100 numbers

            for (int number = 1; number < 100; number++)
            {
                array1[number] = (int)(Math.random() * 100);    
            }

            System.out.println("The numbers divisible by four are: " + Arrays.toString(Isdivisibleby4( array1 )));
        }

         public static int [] Isdivisibleby4(int [] v)
{

    int arraysize = 0;         
    for( int i = 0; i < v.length; i++ )
        if( v[i] % 4 == 0 )
                arraysize++;

    int [] divisibilityArray = new int[arraysize];  

    int j = 0;         

    for( int i = 0; i < v.length; i++ )
    {
            if( i % 4 == 0)
            {
                j++;
            }
    }
    return divisibilityArray;
}

}

但是,输出仅为0秒。 非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

您从未将任何数字复制到divisibilityArray。您可能想要添加类似

的内容
divisibilityArray[j] = v[i];

if条件内,j++;以上。这将确保条目实际上从一个数组复制到另一个数组。

此外,if条件应该是if( v[i] % 4 == 0 ),而不是if( i % 4 == 0 )。否则,你将获得每四个数字,而不是每4的数字;你甚至可能得到ArrayIndexOutOfBoundsException