You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现10道乘法题答题程序:分数无法递增问题求助

解决Java乘法题程序分数无法递增的问题

Hey Nick,我帮你分析下分数始终停留在1的核心原因,以及对应的解决方案:

最可能的问题:分数变量的作用域错误

你遇到的情况大概率是**score变量被声明在循环内部**了。举个例子,要是每次执行循环时都重新创建一个score变量并初始化为1,那循环结束后这个变量就会被销毁,下一次循环又会从头初始化,分数自然永远停留在1。

错误示例(匹配你的问题场景)

// 错误写法:score在循环内声明,每次迭代都会重置
for (int i = 0; i < 10; i++) {
    int score = 1; // 每次循环都重新初始化分数
    // 生成题目、获取用户输入、判断对错的逻辑
    if (答案正确) {
        score++;
    }
    System.out.println("当前分数:" + score);
}

修正后的完整代码

把score变量移到循环外部声明并初始化,这样每次循环的累加结果都会被保留:

package Assignment1;
import java.util.Scanner;
import static java.lang.System.in;

public class MultiplicationQuiz {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(in);
        int score = 0; // 分数变量放在循环外,初始化为0
        int totalQuestions = 10;

        for (int i = 0; i < totalQuestions; i++) {
            // 生成1-10之间的随机乘法题
            int num1 = (int) (Math.random() * 10) + 1;
            int num2 = (int) (Math.random() * 10) + 1;
            int correctAnswer = num1 * num2;

            // 向用户提问
            System.out.print("第" + (i+1) + "题:" + num1 + " × " + num2 + " = ");
            int userAnswer = scanner.nextInt();

            // 判断对错并更新分数
            if (userAnswer == correctAnswer) {
                System.out.println("回答正确!");
                score++; // 答对一次加1分
            } else {
                System.out.println("回答错误,正确答案是:" + correctAnswer);
            }
        }

        // 输出最终得分
        System.out.println("答题结束!你的最终得分是:" + score + "/" + totalQuestions);
        scanner.close();
    }
}

额外需要检查的细节

  • 确认答案判断逻辑:有没有把用户输入的类型转换错误,或者不小心用了赋值符号=而不是比较符号==(这种小失误会导致判断失效,分数无法累加)。
  • 检查score的初始值:如果你的初始值设为1,但答对时没有执行score++操作,分数也会一直停留在1,务必确保答对的分支里有明确的累加代码。

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:28:05