在我的应用程序中,我有很多可以优化的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;}
它的想法是从游戏中计算出用户级别,并从中创建一个百分比。但是这个编码区域实际上并不高效,因为它可能会产生多个错误,任何人都可以获得有关可能解决方案的任何提示 请询问是否需要更多信息。
答案 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)
或那些行中的某些东西将完成这项工作。关键是那里似乎有一些逻辑,你应该能够一起消除if语句。
答案 3 :(得分:0)
在这种情况下,我更喜欢制作静态[不是java关键字] propertiesfile / map / table,并将细节存储在属性,地图或表中。然后在运行时从地图读取并设置适当的值或做事情。这个帮助是通过简单地将值添加到
而无需编码的扩展