java - 从固定大小的数组中删除 `int`

标签 java

我编写了一段代码,用于从数组中删除 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/

相关文章:

java - 有没有方便的从Optional到Stream的映射方法?

java - 如何以编程方式检查哪个 sim 卡被设置为 android 中的默认 sim 卡

java - 如何检查页面是否有内容?

java - 如何检索从 Web 服务发送的值

java - 如何校准磁传感器?

Java 8 ConcurrentHashMap 每键 wait() 内的compute()

java - 图像裁剪,使用 Java 去除图像中不需要的白色部分

java - 使用 selenium 无法访问 org.openqa.selenium.webdriver 错误?

java - 具有默认无参数构造函数时出现解码错误 Jaxb - "Class does not have a default no arg constructor"

java - 在代码中创建 File 实例