У меня есть два массива. Один из них является входным пользовательским массивом, а другой - массивом выбора. Например, пользовательский массив - ЧЕРНЫЙ, КРАСНЫЙ, ЗЕЛЕНЫЙ, а массив выбора - СИНИЙ, КРАСНЫЙ, ЗЕЛЕНЫЙ. Поскольку 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;
}