如何在Java中检查项目是否在数组中?

如何在Java中检查项目是否在数组中?,java,arrays,methods,Java,Arrays,Methods,我必须做一个程序,创建一个数组,其中只能放正数,但我不知道如何验证元素“a[j]”是否已经在数组“b”中。我寻找了一些方法(比如“contains”),但是程序给了我一个错误 public class YourClassNameHere { public static int[] main(String[] args) { int[] a = {1,-2,3,-5}; int[] b = new int[a.length]; for(int

我必须做一个程序,创建一个数组,其中只能放正数,但我不知道如何验证元素“a[j]”是否已经在数组“b”中。我寻找了一些方法(比如“contains”),但是程序给了我一个错误

public class YourClassNameHere {
    public static int[] main(String[] args) {
        int[] a = {1,-2,3,-5};
        int[] b = new int[a.length];
        for(int i = 0; i < b.length; i++)
           for(int j = 0; j < a.length; j++)
            if(a[j] > 0)
            if(!(Arrays.asList(b).contains(a[j]))) // ?
                b[i] = a[j];
        return b;
    }
}

常规数组没有方法
contains()
。另外,您不能将
array.asList
与primitive一起使用,因为Java的泛型不支持
List
之类的primitive类型。您可以使用
Integer[]b
而不是
int[]b
,这样您的示例就可以很好地运行了

但对于基本类型,您可以使用流api,如:

Arrays.stream(b).anyMatch(value -> value == a[j])

将您的代码修改为:

public class Main {

    public static void main(String[] args) {
        int[] a = { 1, -2, 3, -5 };
        //to store all positive values
        List<Integer> list = Arrays.stream(a).filter(number -> (number > 0)).boxed().collect(Collectors.toList());
        List<Integer> newList = new ArrayList<Integer>();
        //to remove duplicate values  
        for (Integer element : list) {
            if (!newList.contains(element)) {
                newList.add(element);
            }
        }
        // convert to array
        int[] newArr = new int[newList.size()];
        for (int i = 0; i < newList.size(); i++)
            newArr[i] = newList.get(i);

        for (int x : newArr)
            System.out.print(x + " ");

    }

}

出现了什么错误?首先,请正确使用大括号和空格重写代码。您当前编写代码的方式不安全且容易出错。此代码工作正常。请添加错误。请阅读“如何创建错误”。然后使用链接改进您的问题(不要通过评论添加更多信息)。否则,我们无法回答您的问题并帮助您。您是否导入
java.util.*
?使用main方法作为void返回类型。
public class Main {

    public static void main(String[] args) {
        int[] a = { 1, -2, 3, -5 };
        //to store all positive values
        List<Integer> list = Arrays.stream(a).filter(number -> (number > 0)).boxed().collect(Collectors.toList());
        List<Integer> newList = new ArrayList<Integer>();
        //to remove duplicate values  
        for (Integer element : list) {
            if (!newList.contains(element)) {
                newList.add(element);
            }
        }
        // convert to array
        int[] newArr = new int[newList.size()];
        for (int i = 0; i < newList.size(); i++)
            newArr[i] = newList.get(i);

        for (int x : newArr)
            System.out.print(x + " ");

    }

}
1 3