【发布时间】:2013-08-24 11:13:02
【问题描述】:
我正在显示用户分数“正确/尝试”(例如 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"
我认为我在分区线上做错了什么,但我无法独自解决。任何帮助,将不胜感激。
【问题讨论】:
-
整数除法返回整数值
-
我不知道!看来我还是缺乏基础。你解决了我的问题。非常感谢你!我将函数更改为 public void changemyColor(double uno, double due) 现在一切都像一个魅力。
-
@pinolo 这不是最合适的解决方法:try 和 right 是整数值,应该保持整数值。相反,请使用
double value = ((double) right / tries)。 -
您是否想在 else 子句中使用
&而不是&&:else if (value < 80 & value >= 30)?!这两个运算符之间有区别! -
是的,我故意使用 & 而不是 && 但现在我意识到它没有多大意义。感谢您指出!
标签: java android switch-statement integer-division