Android - Оптимизация нескольких операторов if - PullRequest
0 голосов
/ 15 марта 2011

В моем приложении у меня есть много операторов 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 ]

2 голосов
/ 15 марта 2011

Возможно, сохраните ваши требования к уровню опыта в массиве и используйте цикл.

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 голос
/ 15 марта 2011

Почему бы не сделать что-то более общее? ...

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!

0 голосов
/ 15 февраля 2012

В таких случаях я предпочитаю создать статический [не ключевое слово java] файл свойств / карту / таблицу и хранить детали в свойствах, карте или таблице. А затем во время выполнения прочитайте с карты и установите соответствующие значения или сделайте что-нибудь. Эта помощь - расширение без кодирования путем простого добавления значений к

0 голосов
/ 15 марта 2011

похоже User_level.setText (String.valueOf (User_XP-1); Minimum_Level = User_level; Maximum_level = User_XP;

или что-то в этих строках сделает работу. Дело в том, что там, кажется, есть какая-то логика, вы должны быть в состоянии полностью исключить оператор if.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...