假设您有一组固定的结果,如下图所示:
列号代表将要发生的四个阶段 每一行都是四个阶段的可能结果。
例如:如果第一阶段是PURPLE而第二阶段是ORANGE,第三阶段将是蓝色,第四阶段将是红色。
我已经能够通过一个非常复杂的if / else语句来完成这个,但我想知道是否有更好的方法?
编辑:必须在第一阶段之后进行预测,并且应该为第二阶段返回两种可能性。
答案 0 :(得分:1)
如果您希望根据第一个和第二个获得第三个和第四个,只需构建一个地图:
Map<String, String> map = new HashMap<>();
map.put("BR", "OP");
map.put("BP", "RO");
// ...
其中B
,R
,O
和P
分别代表蓝色,红色,橙色和紫色。然后你可以查询一下,例如
String thirdAndFourth = map.get("BP");
请注意,其他一些结构可能比字符串更好,例如
class ColorPair {
Color first;
Color second;
}
但这个想法是一样的:
Map<ColorPair, ColorPair> map = new HashMap<>();
// Populate map...
ColorPair thirdAndFourth = map.get(firstAndSecond);
答案 1 :(得分:0)
我有一个6x4的颜色数组,并快速循环找到与前两种颜色相匹配的行。循环六行检查数组中前两个条目的值不会是复杂的代码或性能问题。
答案 2 :(得分:0)
预存结果的递归方法怎么样, 在开始处理输入之前调用setup()。
// Pre known outcomes
List<String> outcomes;
// To track the inputs as we move on through them
public static StringBuilder inputStore = new StringBuilder();
// To track no of inputs expected overall
public static int counter = 0;
// Method for processing next input recursively
public static void next(int input){
// Appending is to track each input
inputStore.append(input);
counter++;
if(counter == noOfInputsExpected){
// Process inputStore
String s1 = inputStore.toString();
for(String s : outcomes){
// Check if the inputs collected match the defined ones
if(s.equals(s1))
//Process outcome
}
return;
}
else if(input == 1 || input == 2 || input == 3 || input == 4){
// In case of valid input move on
// We can even separate each one as a else for mid step processing
next(getNextInput());
}
else{
// Bad input, take some action
}
}
public static void setup(){
// Assuming inputs, are {1234, 1324, ... some permutations in you know}
outcomes = new ArrayList<String>(noOfPermutationsRequired);
//Put all the known possibilities
...
outcomes.add("1234");
outcomes.add("1324");
...
}