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

时间:2013-08-24 11:13:03

标签: java android switch-statement integer-division

我显示用户得分"对/尝试" (例如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"

我认为我在分界线上做错了什么,但我不能单独解决这个问题。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:2)

由于它是移动的,如果您仍想使用int在设备上使用更少的资源,(在使用整数时意识到整数除法是默认值之后),您可以先执行乘法,以便您不要四舍五入到0:

int value = (right*100) / tries;

它不会非常准确,但无论如何你确实有一系列值。只是一个想法。

答案 1 :(得分:2)

如果您想要使用准确的结果

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