太多的“if"语句? [英] Too many 'if' statements?
问题描述
以下代码确实按照我的需要工作,但它很丑陋、过多或其他一些事情.我查看了公式并尝试编写一些解决方案,但最终得到的语句数量相似.
The following code does work how I need it to, but it's ugly, excessive or a number of other things. I've looked at formulas and attempted to write a few solutions, but I end up with a similar amount of statements.
在这种情况下,是否有一种数学公式可以使我受益,或者如果陈述可以接受,则为 16?
Is there a type of math formula that would benefit me in this instance or are 16 if statements acceptable?
为了解释代码,它是针对一种同时回合制的游戏.两个玩家每个都有四个动作按钮,结果来自一个数组 (0-3),但变量 'one' &如果有帮助,可以为两个"分配任何内容.结果是,0 = 都不赢,1 = p1 赢,2 = p2 赢,3 = 都赢.
To explain the code, it's for a kind of simultaneous-turn-based game.. two players have four action buttons each and the results come from an array (0-3), but the variables 'one' & 'two' can be assigned anything if this helps. The result is, 0 = neither win, 1 = p1 wins, 2 = p2 wins, 3 = both win.
public int fightMath(int one, int two) {
if(one == 0 && two == 0) { result = 0; }
else if(one == 0 && two == 1) { result = 0; }
else if(one == 0 && two == 2) { result = 1; }
else if(one == 0 && two == 3) { result = 2; }
else if(one == 1 && two == 0) { result = 0; }
else if(one == 1 && two == 1) { result = 0; }
else if(one == 1 && two == 2) { result = 2; }
else if(one == 1 && two == 3) { result = 1; }
else if(one == 2 && two == 0) { result = 2; }
else if(one == 2 && two == 1) { result = 1; }
else if(one == 2 && two == 2) { result = 3; }
else if(one == 2 && two == 3) { result = 3; }
else if(one == 3 && two == 0) { result = 1; }
else if(one == 3 && two == 1) { result = 2; }
else if(one == 3 && two == 2) { result = 3; }
else if(one == 3 && two == 3) { result = 3; }
return result;
}
推荐答案
如果你不能想出一个公式,你可以使用一个表格来计算这样有限数量的结果:
If you cannot come up with a formula, you can use a table for such a limited number of outcomes:
final int[][] result = new int[][] {
{ 0, 0, 1, 2 },
{ 0, 0, 2, 1 },
{ 2, 1, 3, 3 },
{ 1, 2, 3, 3 }
};
return result[one][two];
这篇关于太多的“if"语句?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!