我的应用程序是一个测验应用程序,其中有一部分会以Toast的形式回答所有问题后,吐出一部分用户正确的问题。
正在显示吐司,但百分比始终为0。
我前面有一些日志消息:
Log.i("MainActivity", "Amount i got right "+Integer.toString(right));
Log.i("MainActivity", "total is "+Integer.toString(total));
Toast.makeText(this, "You answered " + (right/total)*100 + "% of questions correct", Toast.LENGTH_SHORT).show();
在日志中显示“ I / MainActivity:我正确的金额4 总共是6英寸
为什么吐司百分比为0?
这是函数:
int i = 0;
int total = mQuestionBank.length;
check = true;
right = 0;
while (i<total && check){
if(mQuestionBank[i].isAlreadyAnswered()){
if(mQuestionBank[i].isAnswerTrue()){
right+=1;
check = true;
}
}else{
check = false;
}
i++;
}
if(check) {
double percent = (right / total) * 100;
Log.i("MainActivity", "Amount i got right "+Integer.toString(right));
Log.i("MainActivity", "total is "+Integer.toString(total));
Toast.makeText(this, "You answered " + (right/total)*100 + "% of questions correct", Toast.LENGTH_SHORT).show();
}else {
int question = mQuestionBank[mCurrentIndex].getTextResId();
mQuestionTextView.setText(question);
mTrueButton.setEnabled(!mQuestionBank[mCurrentIndex].isAlreadyAnswered());
mFalseButton.setEnabled(!mQuestionBank[mCurrentIndex].isAlreadyAnswered());
}
吐司面包说“您回答了0%正确的问题”
答案 0 :(得分:4)
代码确定。您只需要简单的修改。 试试这个:
double percent = (right*100)/total ;
或,
double percent = ((double)right/total)*100 ;
希望这可以。
更新:
以right = 5
和total = 10
为例。由于变量right和true是整数,因此right/total
始终为0零,因为它们将返回整数值,并且.
之后的值不视为整数值。
要解决该问题,您可以将right和total用作double变量,或者将right转换为double。而第一个解释公式。 ***因为right*100 = 500
和(right*100)/total = 500/10 = 50
。
答案 1 :(得分:1)
我想您可以稍微修改一下公式:
Toast.makeText(this, "You answered " + ((right*100)/total) + "% of questions correct", Toast.LENGTH_SHORT).show();
除非需要更精确的数字,否则无需使用双精度符号。
答案 2 :(得分:0)
我不确定是否可以尝试这样:
`Toast.makeText(this, "You answered " + pecent + "% of questions correct", Toast.LENGTH_SHORT).show();`