Android App Toast混乱

时间:2018-07-06 04:07:02

标签: java android android-toast

我的应用程序是一个测验应用程序,其中有一部分会以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%正确的问题”

3 个答案:

答案 0 :(得分:4)

代码确定。您只需要简单的修改。 试试这个:

double percent = (right*100)/total ;

或,

double percent = ((double)right/total)*100 ;

希望这可以。


更新:

为什么您的代码无法正常工作?

right = 5total = 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();`