java - 从数组中删除特定值(java)

标签 java arrays

我有整数 a = 4 和数组 b 7,8,9,4,3,4,4,2,1

我必须编写一个方法从数组 b 中删除 int ALL a

期望的结果 7,8,9,3,2,1

这是我目前的情况,

    public static int[] removeTwo (int x, int[] array3)
{
    int counter = 0;
    boolean[] barray = new boolean [array3.length];
    for (int k=0; k<array3.length; k++)
    {
        barray[k] = (x == array3[k]);
        counter++;
    }

     int[] array4 = new int [array3.length - counter];
     int num = 0;
     for (int j=0; j<array3.length; j++)
{
     if(barray[j] == false)
    {
        array4[num] = array3[j];
        num++;
    }

}
     return array4;

我收到这个错误

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at Utility.removeTwo(Utility.java:50)
    at Utility.main(Utility.java:18)

Java 结果:1

如有任何帮助,我们将不胜感激!

最佳答案

错误源于这个 for 循环:

for (int k=0; k<array3.length; k++)
{
    barray[k] = (x == array3[k]);
    counter++;
}

当您创建 int[] array4 = new int [array3.length - counter]; 时,您正在创建一个大小为 0 的数组。如果该项目是所需的项目,您应该只增加计数器删除:

for (int k=0; k<array3.length; k++)
{
    boolean b = (x == array3[k]);
    barray[k] = b;
    if(b) {
        counter++;
    }
}

要在评论中回答您的问题,应该调用该方法并可以像这样检查:

public static void main(String[] args) {
    int[] array3 = {0,1,3,2,3,0,3,1};
    int x = 3;
    int[] result = removeTwo(x, array3);
    for (int n : result) {
        System.out.print(""+ n + " ");
    }
}

关于java - 从数组中删除特定值(java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20472812/

相关文章:

ios - 单击表格行时在 SecondViewController 上显示错误信息

java - karaf 中的 Apache Felix 文件安装示例

java - 如何将数据库表中的行值与jsp中的字符串进行比较

java - 使用 Couchbase Java SDK 创建管理员用户

arrays - 将对象数组作为属性插入到 neo4j 中

java - 对数组中的元素执行算术运算 - android/java

java - 将 char[] 的每一项转换为其 ASCII 码

java - 传递给方法的无限通配符

python - 无法在 <module 'abc' from '__main__' > 上获取属性 'abc_h.py' >

c - 如何返回仅包含偶数/奇数的数组并删除不必要的单元格?