Как проверить, есть ли элемент в массиве на Java? - PullRequest
0 голосов
/ 08 марта 2019

Мне нужно сделать программу, которая создает массив, в который можно помещать только положительные числа, но я не знаю, как проверить, что элемента "a [j]" еще нет в массиве "b". Я искал методы (например, «содержит»), но программа выдает мне ошибку.

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;
    }
}

В строке 8:

 Error: cannot find symbol
      symbol:   variable Arrays
      location: class YourClassNameHere

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

Измените свой код так:

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
0 голосов
/ 08 марта 2019

Обычный массив не имеет метода contains().Также вы не можете использовать Arrays.asList с примитивами, потому что дженерики Java не поддерживают примитивные типы, такие как List<int>.Вы можете использовать Integer[] b вместо int[] b, тогда ваш пример будет работать нормально.

Но с примитивными типами вы можете использовать stream api, например:

Arrays.stream(b).anyMatch(value -> value == a[j])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...