我编写了一段代码,用于从数组中删除 number
。当我运行我的代码时,它恰好没有删除 number
而是给我另一个 number
。例如,当我传递数字 44
以将其删除时,输出恰好是 3
而不是删除它。可能是什么问题?
给定输入:
2 5 33 44 3 8 6 7 4
示例输出:
2 5 33 3 3 8 6 7 4
代码:
public class RemoveAtIndex {
public static void main(String[] args)
{
int[] myArray = {2, 5, 33, 44, 3, 8, 6, 7, 4};
int[] output = removeFromIndex(myArray, 44);
for(int i = 0; i < output.length; i++)
{
System.out.print(output[i] + " ");
}
}
public static int[] removeFromIndex(int[] myArray, int num)
{
int[] resultArray = new int[myArray.length - 1];
for(int i = 0; i < myArray.length; i++){
if(myArray[i] != num){
resultArray[i] = myArray[i];
}
else
resultArray[i] = myArray[i+1];
}
return resultArray;
}
}
最佳答案
您的代码将抛出 ArrayIndexOutOfBoundException
,因为两个数组的长度不同,并且您在 for 循环中分配时使用相同的变量
i
进行迭代
所以我将一个数组的代码修改为i
,将另一个数组的代码修改为j
public static int[] removeFromIndex(int[] myArray, int num) {
int[] resultArray = new int[myArray.length - 1];
for (int i = 0, j = 0; i < myArray.length; i++) {
if (myArray[i] != num) {
resultArray[j++] = myArray[i];
}
}
return resultArray;
}
关于java - 从固定大小的数组中删除 `int`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30958034/