Android - 优化多个if语句

时间:2011-03-15 16:55:01

标签: java android optimization if-statement

在我的应用程序中,我有很多可以优化的IF语句,但是对于我来说,在没有错误的情况下无法找到一个好的解决方案。

我目前的代码:

    if (User_XP > -1){User_level.setText("1");Minimum_Level= Level1; Maximum_level = Level2;}
    if (User_XP > Level1){User_level.setText("1");Minimum_Level= Level1; Maximum_level = Level2;}
    if (User_XP > Level2){User_level.setText("2");Minimum_Level = Level2; Maximum_level = Level3;}
    if (User_XP > Level3){User_level.setText("3");Minimum_Level = Level3; Maximum_level = Level4;}
    if (User_XP > Level4){User_level.setText("4");Minimum_Level = Level4; Maximum_level = Level5;}
    if (User_XP > Level5){User_level.setText("5");Minimum_Level = Level5; Maximum_level = Level6;}
    if (User_XP > Level6){User_level.setText("6");Minimum_Level = Level6; Maximum_level = Level6;}
    if (User_XP > Level7){User_level.setText("7");Minimum_Level = Level7; Maximum_level = Level6;}
    if (User_XP > Level8){User_level.setText("8");Minimum_Level = Level8; Maximum_level = Level6;}
    if (User_XP > Level9){User_level.setText("9");Minimum_Level = Level9; Maximum_level = Level6;}

它的想法是从游戏中计算出用户级别,并从中创建一个百分比。但是这个编码区域实际上并不高效,因为它可能会产生多个错误,任何人都可以获得有关可能解决方案的任何提示 请询问是否需要更多信息。

4 个答案:

答案 0 :(得分:2)

也许将您的级别体验要求存储在数组中并使用循环。

int[] levels = new int[] { -1, Level1, Level2, Level3 };

int level;
for (level = 0; level < levels.length && userXp < levels[level]; level++) { }
int minLevel = levels[level];
int maxLevel = levels[level + 1];
userLevelText.setText(Integer.toString(minLevel));

答案 1 :(得分:1)

为什么不做更通用的事情?...

if (User_XP > Minimum_Level) {
    User_level.setText(Integer.toString(++Minimum_Level));
}

当然如果需要min / max而不是仅仅进行计算..

if (User_XP > Minimum_Level) {
    User_level.setText(Integer.toString(++Minimum_Level));
    Maximum_Level = Minimum_Level + 1;
}

如果你想限制if(Minimum_Level == 10) return; //Too much awesome!

等级别的绝对数量,你可以预先加入边界检查

答案 2 :(得分:0)

好像是 User_level.setText(String.valueOf(User_XP-1); Minimum_Level = User_level; Maximum_level = User_XP;

或那些行中的某些东西将完成这项工作。关键是那里似乎有一些逻辑,你应该能够一起消除if语句。

答案 3 :(得分:0)

在这种情况下,我更喜欢制作静态[不是java关键字] propertiesfile / map / table,并将细节存储在属性,地图或表中。然后在运行时从地图读取并设置适当的值或做事情。这个帮助是通过简单地将值添加到

而无需编码的扩展