我正在用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秒。 非常感谢任何帮助。谢谢。
答案 0 :(得分:1)
您从未将任何数字复制到divisibilityArray
。您可能想要添加类似
divisibilityArray[j] = v[i];
在if
条件内,j++;
以上。这将确保条目实际上从一个数组复制到另一个数组。
此外,if
条件应该是if( v[i] % 4 == 0 )
,而不是if( i % 4 == 0 )
。否则,你将获得每四个数字,而不是每4的数字;你甚至可能得到ArrayIndexOutOfBoundsException
。