Как я могу вернуть false, если значение в массиве не содержится в другом массиве? - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть два массива. Один из них является входным пользовательским массивом, а другой - массивом выбора. Например, пользовательский массив - ЧЕРНЫЙ, КРАСНЫЙ, ЗЕЛЕНЫЙ, а массив выбора - СИНИЙ, КРАСНЫЙ, ЗЕЛЕНЫЙ. Поскольку BLACK отсутствует в массиве choices, он возвращает false. Вы также можете получить RED, RED, RED, возвращающие True, так как красный цвет содержится в массиве выбора, не имеет значения, сколько раз вы используете выбор.

Вот мой текущий код, но isTrue только когда-либо повышаетсяодин раз по какой-то причине, и я не думаю, что это объясняет наличие нескольких вариантов одного цвета. Я чувствую, что должен быть более простой способ сделать это?

public Boolean isValidColour(String userInput) {
        ArrayList<String> userPegsArray = new ArrayList<>();
        String[] userPegs = userInput.toUpperCase().split(",");
        int isTrue = 0;
        for (String peg: userPegs) {
            userPegsArray.add(peg);
        }

        for (int i = 0; i <Peg.values().length; i++) {
            for (String peg:userPegsArray) {
                if(peg.equals(Peg.valueOf(i).toString())) {
                    isTrue += 1;
                }
            }
        }
        if(isTrue == 5) {
            return true;
        }
        return false;
    }

Обновление: решено, спасибо за помощь в комментариях.

РЕШЕНИЕ

    public Boolean isValidColour(String userInput) {
        ArrayList<String> userPegsArray = new ArrayList<>();
        String[] userPegs = userInput.toUpperCase().split(",");
        for (String peg: userPegs) {
            userPegsArray.add(peg);
        }

        Map pegMap = new HashMap<String,Integer>();
        for (int i = 0; i < Peg.values().length; i++) {
            pegMap.put(Peg.valueOf(i).toString(), i);
        }

        for (String peg:userPegs) {
            System.out.println("Peg: " + peg + " | pegMap: " + pegMap.toString());
            if (pegMap.containsKey(peg)) {
                System.out.println("ayyyayay");
                return true;
            }
        }
        return false;
    }

1 Ответ

0 голосов
/ 07 ноября 2019

Обратите внимание, пожалуйста

    public Boolean isValidColour(String userInput) {
        List<String> userPegsArray = Arrays.asList(userInput.toUpperCase().split(","));
        return Peg.containsAll(userPegsArray);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...