我有两个数组。一个是输入用户数组,另一个是选择数组。例如,用户数组为 BLACK、RED、GREEN,选择数组为 BLUE、RED、GREEN。因为 BLACK 不在选择数组中,所以它会返回 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);
}
关于java - 如果一个数组中的值不包含在另一个数组中,如何返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58741870/