Android-приложение Тост путаницы - PullRequest
0 голосов
/ 06 июля 2018

Мое приложение - это приложение для викторины, в котором есть часть, которая выплевывает процент вопросов, которые пользователь получил правильно, ответив на все вопросы в виде тоста.

Тост появляется, но процент всегда приближается к 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 голосов
/ 06 июля 2018

Я не уверен, попробуйте вот так:

`Toast.makeText(this, "You answered " + pecent + "% of questions correct", Toast.LENGTH_SHORT).show();`
0 голосов
/ 06 июля 2018

Полагаю, вы могли бы просто слегка изменить свою формулу:

Toast.makeText(this, "You answered " + ((right*100)/total) + "% of questions correct", Toast.LENGTH_SHORT).show();

Нет необходимости использовать double, если вам не нужны более точные числа.

0 голосов
/ 06 июля 2018

Код в порядке. Вам просто нужна простая модификация. Попробуйте это:

double percent = (right*100)/total ;

или

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

Надеюсь, это сработает.


Обновление:

Почему ваш код не работал?

В качестве примера возьмем right = 5 и total = 10. Поскольку переменные right и true являются целыми числами, right/total всегда будет 0 нулем, потому что они будут возвращать целочисленное значение, а значение после . не рассматривается в целочисленном значении. Чтобы решить проблему, вы можете взять право и сумму как двойную переменную или привести право как двойную. И первая объясненная формула. *** Потому что right*100 = 500 и (right*100)/total = 500/10 = 50.

...