为什么回答Zero为师?

时间:2014-08-26 17:31:06

标签: java math

在我的Activity内,我正在尝试divide两个值,然后multiply将它们设为100,以便提供percentage score.

我的问题是百分比分数始终为零,即使使用我正在使用的值不可能。

我做错了什么?

在活动开始时声明2个变量:

int score = 0;
int totalQuestions=0;

显示如何计算它们的Onclick逻辑:

public void onClick(View v) {

        if (checkForMatch((Button) v)) {
            //increment no of questions answered (for % score)
            totalQuestions++;
            //increment score by 1
            score++;

        } else {
            //increment no of questions answered (for % score)
            totalQuestions++;

        }

    }


public void writeToDatabase() {
        // create instance of databasehelper class
        DatabaseHelper db = new DatabaseHelper(this);

        int divide = (score/ totalQuestions );

        int percentageScore = (divide * 100);

        Log.d("Pertrace", "per score "+ percentageScore);
        Log.d("divide", "divide "+ divide);


        // Adding the new Session to the database
        db.addScore(new Session(sessionID, "Stroop", SignInActivity
                .getUserName(), averageMedLevel, medMax, averageAttLevel,
                attMax, percentageScore, myDate, "false", fileNameRaw, fileNameEEGPower, fileNameMeditation, fileNameAttention));

        // single score, used for passing to next activity
        single = db.getScore(sessionID);

    }

注意:从我的跟踪日志中我可以看到int divide是零,为什么考虑到scoretotalQuestions始终大于零,情况会是这样?例如。 20和25.

4 个答案:

答案 0 :(得分:2)

您将其保存在int中。保存floatdouble中的值。

此外,当发生除法时,中间结果将保存在除法中使用的变量之一中。如果是int,则在truncated中保存之前它将为double。所以做double divide = (double)score * totalQuestions

之类的事情

答案 1 :(得分:2)

原因是这一行

int divide = (score/ totalQuestions);

您正在划分数字并存储在int。

您需要存储在double

double divide = (double)score / totalQuestions;

如果您希望结果为int

double divide = (double)score / totalQuestions;
int percentageScore = (int) Math.ceil(divide * 100);

答案 2 :(得分:1)

您正在执行整数除法。首先将得分变为双精度(因此得到浮点数学),然后我会使用Math.round()来舍入乘法的结果。例如,

int score = 3;
int totalQuestions = 4;
double divide = ((double) score / totalQuestions);
int percentageScore = (int) Math.round(divide * 100);
System.out.println(percentageScore);

输出是预期的

75

答案 3 :(得分:0)

操作数必须是floatdouble,您输入的变量也是如此:

double divide = (double) score/ totalQuestions;