簡體   English   中英

Android-優化多個if語句

[英]Android - Optimising multiple if-statements

在我的應用程序中,我有許多可以優化的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;}

它的想法是從游戲中確定用戶級別,並從中創建一個百分比。 但是這個編碼領域實際上效率不高,因為它會產生多個錯誤,有人對可能的解決方案有任何建議嗎? 請詢問是否需要更多信息。

也許將您的水平經驗需求存儲在一個數組中並使用循環。

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));

為什么不做一些更通用的事情呢?

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

當然,如果需要最小值/最大值而不是僅僅進行計算。

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!類的級別的絕對數,則可以事先進行邊界檢查if(Minimum_Level == 10) return; //Too much awesome! if(Minimum_Level == 10) return; //Too much awesome!

似乎User_level.setText(String.valueOf(User_XP-1); Minimum_Level = User_level; Maximum_level = User_XP;

否則該行中的某項工作即可完成。 關鍵是那里似乎有一些邏輯,您應該能夠一起消除if語句。

在這種情況下,我更喜歡制作一個靜態的[不是Java關鍵字] propertiesfile / map / table,並將詳細信息存儲在properties,map或table中。 然后在運行時從地圖上讀取並設置適當的值或執行操作。 通過簡單地將值添加到

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM