如果数组中的值不包含在另一个数组中,如何返回 false?



我有两个数组。一个是输入用户数组,另一个是选项数组。例如,用户数组为黑色、红色、绿色,而选项数组为蓝色、红色和绿色。因为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;
}

请注意

public Boolean isValidColour(String userInput) {
List<String> userPegsArray = Arrays.asList(userInput.toUpperCase().split(","));
return Peg.containsAll(userPegsArray);
}

相关内容

  • 没有找到相关文章

最新更新