2016-11-21 3 views
0

My progress score barалгоритм расчета оценка

У меня счет как изображения и 5 секций с A, B, C, D, E

раздел А, у меня 10 очков для совпадения с 1 звездой. Раздел B, у меня есть 20 матчей с 2 ​​звездами и секцией C с 40 счетом с 3 звездами ... Когда я получаю 3 звезды, у меня есть 70 баллов. Мне нужна помощь, когда у меня есть баллы, мне нужно изменить размер белого бара на правильный матч со счетом, который у меня есть, любая помощь?

+0

бы определения диапазонов решить вашу проблему? – Aditya

+0

Мои правила: 1 звезда - 10 баллов, 2 звезды - 30 баллов, 3 звезды - 70 баллов, 4 звезды - 150 очков, 5 звезд - 310 баллов. И балл для счета составляет 600 ширины, и я могу изменить размер матча со счетом – ZNApps

ответ

1
final int barSize = 600; 
double barPercent; 
double score = getScore(); 
// Assumed every section is 20% of barPercent 
if (score >= 0 && score <= 10){ 
    barPercent = score/10 * 20; 
}else if (score > 10 && score <= 30){ 
    barPercent = 20 + (score - 10)/20 * 20; 
}else if (score > 30 && score <= 70){ 
    barPercent = 40 + (score - 30)/40 * 20; 
}else {...} 

int result = barSize * barPercent/100; 
return result; 

// test case: 
// 50 score => bar=50 => result=300 

надеюсь, что это помогает

+0

. Моя полоса хода равна 600 ширине, если у меня есть 50 очков, мне нужно изменить размер бара до центра секции C, со средней мой полосой прокрутки до 300 ширины – ZNApps

+0

Обновлено и добавил тестовый пример. – Pika

+0

спасибо, это работает :). Я думаю, что заменить: int result = barSize * barPercent; с int result = barSize * (barPercent/100); – ZNApps

Смежные вопросы