1

我正在显示用户分数“正确/尝试”(例如 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"

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

4

2 回答 2

2

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

int value = (right*100) / tries;

它不会很准确,但无论如何您确实有一系列值要检查。只是一个想法。

于 2013-08-24T11:50:30.920 回答
2

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

double value=(right*100)/(double)tries
于 2013-08-24T12:01:18.987 回答