我有两个数组。一个是输入用户数组,另一个是选择数组。一个示例是用户数组是BLACK,RED,GREEN,而options数组是BLUE,RED,GREEN。因为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;
}