Перейти к содержимому


Глобализация социального статуса


Сообщений в теме: 54

#21 HellFaust

    Живодёр

  • Модераторы
  • 1 823 сообщений
  • ГородMidian

Отправлено 12 Март 2010 - 01:13

Просмотр сообщенияApiAM (12 Март 2010 - 01:06) писал:

От ошибок никто не застрахован...
У меня ещё вопрос...
int e =0;
в первом посте не случайность... это число в зависсимости от значения bal мне тоже нужно...
Вопрос...
как вывести в getBall 2 значения? или аналогичную функцию просто создать?
Создай аналогичную функцию с параметром int и в ней вместо званий эту переменную...
например
public int getBallStatus2(int id) {
int w = 0;
Users uss = srv.us.getUser(id);
if (uss.bal >= 1000000000) w = 10;
if (uss.bal >= 10000000) w = 9;
if (uss.bal >= 1000000) w = 8;
if (uss.bal >= 500000) w = 7;
if (uss.bal >= 100000) w = 6;
if (uss.bal >= 50000) w = 5;
if (uss.bal >= 30000) w = 4;
if (uss.bal >= 500) w = 3;
if (uss.bal >= 0) w = 2;
if (uss.bal < 0) w = 1;
return w;
}

Сообщение отредактировал HellFaust: 12 Март 2010 - 01:13


#22 ApiAM

    Специалист

  • Пользователи
  • PipPipPipPip
  • 248 сообщений
  • ГородКраснодар

Отправлено 12 Март 2010 - 01:19

Да... Спасибо... Я уже сообразил))

#23 mmaximm

    Эх...

  • Модераторы
  • 927 сообщений

Отправлено 12 Март 2010 - 01:36

А вы про switch case слышали? Или хотябы if else if ... ?

#24 ApiAM

    Специалист

  • Пользователи
  • PipPipPipPip
  • 248 сообщений
  • ГородКраснодар

Отправлено 12 Март 2010 - 01:42

Причем тут if else if??

#25 mmaximm

    Эх...

  • Модераторы
  • 927 сообщений

Отправлено 12 Март 2010 - 01:43

Просмотр сообщенияVOLKODAV (12 Март 2010 - 00:25) писал:

/*
 * Глобал.Статус 
 * HellFaust    
 */    
public int getratingStatus(int id) {
String w = "";
Users uss = srv.us.getUser(id);
if (uss.rating >= 1000000000) w = "Олигарх";
if (uss.rating >= 10000000) w = "Магнат";
if (uss.rating >= 1000000) w = "Миллионер";
if (uss.rating >= 500000) w = "Буржуй";
if (uss.rating >= 100000) w = "Богатый";
if (uss.rating >= 50000) w = "Влиятельный";
if (uss.rating >= 30000) w = "Уважаемый";
if (uss.rating >= 500) w = "Состоятельный";
if (uss.rating >= 0) w = "Нищий";
if (uss.rating < 0) w = "Бомж";
return w;
}

И будет он всегда нищим...

#26 ApiAM

    Специалист

  • Пользователи
  • PipPipPipPip
  • 248 сообщений
  • ГородКраснодар

Отправлено 12 Март 2010 - 01:48

Так значит в первом посте у меня правильно было???

#27 HellFaust

    Живодёр

  • Модераторы
  • 1 823 сообщений
  • ГородMidian

Отправлено 12 Март 2010 - 01:51

значит наоборот лесенку)))

#28 VOLKODAV

    Специалист

  • Пользователи
  • PipPipPipPip
  • 288 сообщений
  • ГородКотельнич

Отправлено 12 Март 2010 - 02:04

отесть это надо так:
/*
 * Глобал.Статус 
 * HellFaust    
 */
public String getBallStatus(int id) {
String w = "";
Users uss = srv.us.getUser(id);
if (uss.rating < 0) w = "Бомж";
if (uss.rating >= 0) w = "Нищий";
if (uss.rating >= 500) w = "Состоятельный";
if (uss.rating >= 30000) w = "Уважаемый";
if (uss.rating >= 50000) w = "Влиятельный";
if (uss.rating >= 100000) w = "Богатый";
if (uss.rating >= 500000) w = "Буржуй";
if (uss.rating >= 1000000) w = "Миллионер";
if (uss.rating >= 10000000) w = "Магнат";
if (uss.rating >= 1000000000) w = "Олигарх";
return w;
}


#29 HellFaust

    Живодёр

  • Модераторы
  • 1 823 сообщений
  • ГородMidian

Отправлено 12 Март 2010 - 02:08

поидее да... Просто там не подумал... Выполнение проверок идет по порядку, и в итоге если даже миллионы рейта, будет нщий, ибо больше нуля... а так должен дойти проверко до нужного и выдать его))) Хотя может это и как то иначе можно сделать... После работы ток это на ум пришло..

Сообщение отредактировал HellFaust: 12 Март 2010 - 02:09


#30 masterzx

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 738 сообщений
  • ГородБарнаул

Отправлено 16 Март 2010 - 11:18

Просмотр сообщенияmmaximm (12 Март 2010 - 01:36) писал:

А вы про switch case слышали? Или хотябы if else if ... ?
Неа, они не знают, что это такое, они даже не задумываться, что можно избежать части ненужных проверок и тем самым снизить нагрузку на сервер..
/*
 * Глобал.Статус 
 * HellFaust 
 * Masterzx  
 */    
   public String getratingStatus(Users uss) {
if (uss.bal >= 1000000000) return "Олигарх";
else if (uss.bal >= 10000000) return "Магнат";
else if (uss.bal >= 1000000) return "Миллионер";
else if (uss.bal >= 500000) return "Буржуй";
else if (uss.bal >= 100000) return "Богатый";
else if (uss.bal >= 50000) return "Влиятельный";
else if (uss.bal >= 30000) return "Уважаемый";
else if (uss.bal >= 500) return "Состоятельный";
else if (uss.bal >= 0) return "Нищий";
else return "Бомж";

}
Вызов её
Users us = srv.us.getUser(id);
 s += "Состоятельность " + getratingStatus(us);
З.Ы.: А что ни кто не сказал что предыдущий код вообще не работает?
Скрытый текст

Сообщение отредактировал masterzx: 23 Март 2010 - 14:34


#31 ApiAM

    Специалист

  • Пользователи
  • PipPipPipPip
  • 248 сообщений
  • ГородКраснодар

Отправлено 18 Март 2010 - 23:48

То есть вот этот код будет создавать меньше нагрузки?
       public String getBall(int id) {
             int i =0;
             Users us = srv.us.getUser(id);
             if (us.bal >= i) switch(i){
                 case 0:          return "Нищий";
                 case 500:        return "Состоятельный";
                 case 30000:      return "Уважаемый";
                 case 50000:      return "Влиятельный";
                 case 100000:     return "Богатый";
                 case 500000:     return "Буржуй";
                 case 1000000:    return "Миллионер";
                 case 10000000:   return "Магнат";
                 case 1000000000: return "Олигарх";
             } return "Бомж";
         }


#32 ApiAM

    Специалист

  • Пользователи
  • PipPipPipPip
  • 248 сообщений
  • ГородКраснодар

Отправлено 20 Март 2010 - 23:15

Кто-нибудь ответит??

#33 spec

    Администратор

  • Администраторы
  • 2 399 сообщений
  • ГородКаменск-Уральский

Отправлено 21 Март 2010 - 11:22

В нетбинсе есть инструменты профилирования.
Запусти бота под ним и увидишь какие куски кода больше всего потребляют процессор, и какие объекты занимают больше всего памяти. Можно также понаблюдать за взаимодействием потоков.

#34 ApiAM

    Специалист

  • Пользователи
  • PipPipPipPip
  • 248 сообщений
  • ГородКраснодар

Отправлено 21 Март 2010 - 11:41

Хорошо... поищу...

#35 masterzx

    Профи

  • Специалисты
  • PipPipPipPipPip
  • 738 сообщений
  • ГородБарнаул

Отправлено 23 Март 2010 - 14:47

Просмотр сообщенияApiAM (18 Март 2010 - 23:48) писал:

То есть вот этот код будет создавать меньше нагрузки?
       public String getBall(int id) {
             int i =0;
             Users us = srv.us.getUser(id);
             if (us.bal >= i) switch(i){
                 case 0:          return "Нищий";
                 case 500:        return "Состоятельный";
                 case 30000:      return "Уважаемый";
                 case 50000:      return "Влиятельный";
                 case 100000:     return "Богатый";
                 case 500000:     return "Буржуй";
                 case 1000000:    return "Миллионер";
                 case 10000000:   return "Магнат";
                 case 1000000000: return "Олигарх";
             } return "Бомж";
         }
Этот код работать не будет как нужно... тут будет постоянно "Нищий";,но даже если его исправить к примеру так
Скрытый текст
то тут будет постоянно "бомж" кроме случаев когда сумма будет равна одному из значений. прочтите для чего нужен switch http://computers.pli...va1/Index31.htm для таких целей он совершенно неприемлем...

Сообщение отредактировал masterzx: 23 Март 2010 - 14:52


#36 ApiAM

    Специалист

  • Пользователи
  • PipPipPipPip
  • 248 сообщений
  • ГородКраснодар

Отправлено 23 Март 2010 - 20:20

Ясно... Switch работает только с теми числами, которые есть в case...
Почему тогда mmaximm упомянул этот оператор?

Просмотр сообщенияmmaximm (12 Март 2010 - 01:36) писал:

А вы про switch case слышали? Или хотябы if else if ... ?


#37 mmaximm

    Эх...

  • Модераторы
  • 927 сообщений

Отправлено 23 Март 2010 - 20:26

Просмотр сообщенияApiAM (23 Март 2010 - 20:20) писал:

Ясно... Switch работает только с теми числами, которые есть в case...
Почему тогда mmaximm упомянул этот оператор?
Ступил чуток. С Switch не получится, но намного разумнее использовать if esle if, нежели if if...

#38 ApiAM

    Специалист

  • Пользователи
  • PipPipPipPip
  • 248 сообщений
  • ГородКраснодар

Отправлено 23 Март 2010 - 20:38

Просмотр сообщенияmasterzx (16 Март 2010 - 11:18) писал:

З.Ы.: А что ни кто не сказал что предыдущий код вообще не работает?
Скрытый текст
Наверное потому что никто его не опробовал...

#39 mobinext2009

    Продвинутый пользователь

  • Специалисты
  • PipPipPip
  • 118 сообщений
  • ГородСатка

Отправлено 23 Март 2010 - 23:25

мои вариант :)
public String getratingStatus(int rating) {
int[] rat ={0,500,30000,10000,50000,100000,500000,1000000,10000000,1000000000};
String[] status ={"Нищий","Состоятельный","Уважаемый","Влиятельный","Богатый","Буржуй","Миллионер","Магнат","Олигарх"};
for(int i=1;i<rat.length;i++){
if(rating>rat[i-1] && rating<=rat[i]) return status[i-1];
}
}

Сообщение отредактировал mobinext2009: 23 Март 2010 - 23:49


#40 ApiAM

    Специалист

  • Пользователи
  • PipPipPipPip
  • 248 сообщений
  • ГородКраснодар

Отправлено 23 Март 2010 - 23:33

Кстати про массивы мы чего то и забыли... :) Одни условия да проверки...





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей