我有一个程序,该程序强制搜索用户输入的数组元素的组合,当程序搜索时,所有for循环都嵌套用于野蛮搜索,然后我有这个test(),它负责测试嵌套的for循环的所有可能组合,以找到程序用户输入的组合,无论代码是多么的冗余,这里是一个示例。
public static boolean test(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k){
boolean result1 = true;
if(a == 0){
cube = turn_U(cube);
}
else if(a == 1){
cube = turn_Ui(cube);
}
else if(a == 2){
cube = turn_U2(cube);
}
else if(a == 3){
cube = turn_L(cube);
}
else if(a == 4){
cube = turn_Li(cube);
}
else if(a == 5){
cube = turn_L2(cube);
}
else if(a == 6){
cube = turn_F(cube);
}
else if(a == 7){
cube = turn_Fi(cube);
}
else if(a == 8){
cube = turn_F2(cube);
}
else if(a == 9){
cube = turn_R(cube);
}
else if(a == 10){
cube = turn_Ri(cube);
}
else if(a == 11){
cube = turn_R2(cube);
}
else if(a == 12){
cube = turn_B(cube);
}
else if(a == 13){
cube = turn_Bi(cube);
}
else if(a == 14){
cube = turn_B2(cube);
}
else if(a == 15){
cube = turn_D(cube);
}
else if(a == 16){
cube = turn_Di(cube);
}
else if(a == 17){
cube = turn_D2(cube);
}这就是字母a到k的情况,我想知道如何缩短它,我有一个想法,我可以创建一个方法,根据test()中的字母选择一个转身方法,这样可以减少测试对该方法的11个调用,而不是所有这些重复调用。
发布于 2016-07-15 04:54:36
您考虑过使用switch语句而不是一大堆if / else if吗?Java:switch语句
会是这样的:
switch (a) {
case 0:
cube = turn_U(cube);
break;
case 1:
cube = turn_Ui(cube);
break;
case 2:
cube = turn_U2(cube);
break;
// and so on...
default:
// you can write a default case here, akin to an `else` clause at the end, if you need to.
}当然,这不是一个完整的解决方案,因为在没有看到您的其余代码的情况下,很难准确地判断出最佳解决方案是什么。至少应该足够简化if/else分支的长链。
附加参考:堆栈溢出上的为什么switch比if。
附加注意:请为这个方法中的东西想出更好的名称。命名方法test没有说明它正在测试什么或者为什么。通过a输入参数k没有说明这些参数是什么意思。result1同样模棱两可..。结果1什么?
https://codereview.stackexchange.com/questions/134938
复制相似问题