我收到标题错误,不知道是什么意思/如何解决
该程序应该有一个由100个1-100组成的随机数的数组,并构成该数组中所有可除以4的数字的数组,并列出它们
public class JavaProgram{
public static void main (String [] args){
int [] hundredNumbers = new int [100];
for ( int i=0; i <hundredNumbers.length; i++ )
hundredNumbers[i] = (int) Math.random() * 100;
int [] multiplesOfFour = new int [100];
for ( int i=0; i<hundredNumbers.length; i++)
multiplesOfFour[i] = hundredNumbers[i];
getEvenMultiples(multiplesOfFour);
for ( int i=0; i < multiplesOfFour.length; i++ )
System.out.print (multiplesOfFour[i] + " ");
}
public static int[] getEvenMultiples(int[] x){
int result [] = {};
int count = 0;
for (int i = 0; i < x.length ; i++){
if ( x[i] % 4 == 0 ){
result = new int [++count];
result [count] = x[i];
}
}
return result;
}
}
我应该得到一个除以4的所有数字的列表,但得到
“线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException: 索引1超出长度1的范围 在JavaProgram.getEvenMultiples(JavaProgram.java:27) 在JavaProgram.main(JavaProgram.java:13)”
答案 0 :(得分:0)
问题在于getEvenMultiples函数中的结果数组。
您将count(数组的长度)用作索引,并且由于长度始终大于最大索引,因此会出现此错误。例如,您有一个长度为2的数组,则只能使用索引0和1。因此,您实际上会执行类似“结果[count-1] = x [i];”
的操作。您遇到的另一个问题是,在执行“结果=新int [++ count];”时,始终删除孔阵列。您实际上想使用类似ArrayList
(https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html)的列表。在这里,您可以找到有关如何使用ArrayList
的信息:https://www.javatpoint.com/java-arraylist。
啊,你永远不会在主函数中使用getEvenMultiples函数的结果。