Android app Toast confusion

1h1h1h1h1h1h1h:

Mon application est une application quiz, dans ce qu'il ya une partie qui recrache un pour cent des questions auxquelles l'utilisateur a obtenu juste après avoir répondu à toutes les questions comme Toast.

Le toast montre jusqu'à mais le pourcentage est toujours à venir 0.

J'ai quelques messages du journal juste en face:

        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();

Dans le journal, il dit: « Je / MainActivity: Montant i a obtenu le droit 4 total est 6 »

Pourquoi le pourcentage de pain grillé à venir comme 0 ??

voici la fonction:

    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());
    }

La Toast dit: « Vous avez répondu à 0% des bonnes questions »

Sudipta Basak:

Le code est OK. Vous avez juste besoin d'une modification simple. Essaye ça :

double percent = (right*100)/total ;

ou ,

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

Espérons que cela fonctionnera.


Mise à jour :

Pourquoi votre code ne fonctionnait pas?

A titre d'exemple prendre right = 5et total = 10. Comme la variable juste et vrai sont des nombres entiers de sorte right/totalsera de 0 zéro toujours parce qu'ils retourneront une valeur entière et la valeur après .ne sont pas pris en compte dans la valeur entière. Pour résoudre le problème , vous pouvez prendre à droite et tout aussi variable double ou jeter la droite double. Et la formule d' abord expliqué. *** Parce que , right*100 = 500et (right*100)/total = 500/10 = 50.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=187046&siteId=1
conseillé
Classement