繁体   English   中英

Android检查int是否在interval + switch语句中

[英]Android check if an int is in an interval + switch statement

我正在显示用户分数“right / tries”(例如10/100),但我想将其显示为%(约10%)。 此外,如果得分> = 90%,我希望它是绿色,如果得分在60%和90%之间则为蓝色,否则为红色。 使用我的代码,如果得分为100%,则得分为绿色,否则为红色。 它永远不会是蓝色的。 (如果我最小化应用程序并返回,有时甚至是黑色,xml的默认值)。

我的类以这种方式调用changemyColor函数

 ....
int holderRight = sharedPrefs.getInt("Right", 0);
int holderTries = sharedPrefs.getInt("Tries", 0);
if ( holderTries != 0) { // to avoid n/0
changemyColor(holderRight,holderTries);
}

这就是功能

       public void changemyColor(int right, int tries) {
       TextView tvId = (TextView) findViewById(com.example.somma.R.id.score_field);
       int pino = 0; 

       double value = ((right / tries)*100) ;
       tvId.setText(getString(R.string.Score_capital) + sharedPrefs.getInt("Right", 0) + getString(R.string.Score_of) + sharedPrefs.getInt("Tries", 0));
       if (value >= 80) {
           pino = 1;
       } else if (value < 80 & value >= 30) {
               pino = 2;       
       } else if (value < 30) {
           pino = 3;
       }

       switch (pino){
       case 1:
           tvId.setTextColor(Color.GREEN);
           break;
       case 2:
           tvId.setTextColor(Color.BLUE);
           break;
       case 3:
           tvId.setTextColor(Color.RED);
           break;
       }       

   }

我还将代码更改为

blabla.setText(value + " " + right + "/" + tries); 

得到了输出

"1.0 1/1"
"0.0 1/2"
"0.0 2/3"
"0.0 3/4"
"0.0 4/5"
"0.0 5/6"
"0.0 6/7"
"0.0 7/8" 
"0.0 8/9"
"0.0 9/10"

我认为我在分界线上做错了什么,但我无法独自解决。 任何帮助,将不胜感激。

由于它是移动的,如果你仍想使用int来在设备上使用更少的资源,(在使用整数时意识到整数除法是默认值之后),你可以先执行乘法,这样你就不会被舍入为0 :

int value = (right*100) / tries;

它不会非常准确,但你确实有一系列你正在检查的值。 只是一个想法。

如果你想要准确的结果你必须使用

double value=(right*100)/(double)tries

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM