Android检查int是不是在区间+ switch语句中

Posted

技术标签:

【中文标题】Android检查int是不是在区间+ switch语句中【英文标题】:Android check if an int is in an interval + switch statementAndroid检查int是否在区间+ switch语句中 【发布时间】: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 子句中使用 &amp; 而不是 &amp;&amp;else if (value &lt; 80 &amp; value &gt;= 30) ?!这两个运算符之间有区别! 是的,我故意使用 & 而不是 && 但现在我意识到它没有多大意义。感谢您指出! 【参考方案1】:

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

int value = (right*100) / tries;

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

【讨论】:

我不需要那种精确度,所以您的解决方案是完美的。非常感谢!【参考方案2】:

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

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

【讨论】:

你能解释一下为什么不需要对(双重)施放权利吗?编辑:好的,我读到了@Ozzy 的答案。 非常感谢您花时间阅读我的帖子并写下您的答案。我希望我能选择 2 个最佳答案。

以上是关于Android检查int是不是在区间+ switch语句中的主要内容,如果未能解决你的问题,请参考以下文章

java检查char是不是是switch case语句中的数字[关闭]

Java,简化检查 int 数组是不是包含 int

检查字典中的对象是不是为 Int (Swift)

如何检查整数是不是在范围内?

如何检查 int var 是不是包含特定数字

如何检查一个 int 是不是包含另一个 int 作为它的一部分?