我编写了一个用于从数组中删除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;
}
}
答案 0 :(得分:1)
您的代码将抛出ArrayIndexOutOfBoundException
,因为两个数组的长度不同,并且您在i
for-loop
进行迭代
所以我将代码修改为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;
}
答案 1 :(得分:0)
尝试:
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.push(myArray[i]);
}
else{
return myArray;
}
return resultArray;
}
}
您可能必须包含stack.push类
答案 2 :(得分:0)
您正在处理不同大小的数组,因此当您将旧数组中的内容分配给新数组并删除感兴趣的数量时,您将需要两个单独的索引。
public static void main(String[] args) throws Exception {
int[] myArray = {2, 5, 33, 44, 3, 8, 6, 7, 4};
int[] output = removeFromIndex(myArray, 44);
System.out.println(Arrays.toString(output));
}
public static int[] removeFromIndex(int[] myArray, int num) {
// Index counter for the new array
int index = 0;
int[] resultArray = new int[myArray.length - 1];
for (int i = 0; i < myArray.length; i++) {
// Skip the element that matches the number wanting to be removed
if (myArray[i] == num) {
continue;
}
resultArray[index] = myArray[i];
index++;
}
return resultArray;
}
结果:
[2, 5, 33, 3, 8, 6, 7, 4]
您是否可以使用Java 8?如果是这样,您可以使用一行执行删除过程并获得相同的结果。
public static void main(String[] args) throws Exception {
int[] myArray = {2, 5, 33, 44, 3, 8, 6, 7, 4};
int[] output = removeFromIndex(myArray, 44);
System.out.println(Arrays.toString(output));
}
public static int[] removeFromIndex(int[] myArray, int num) {
return Arrays.stream(myArray).filter(n -> n != num).toArray();
}