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

Java如何将硬编码的char二维数组answer改为动态接收用户输入

学生答题自动评分动态输入版实现

修改后完整代码

import java.util.Scanner;

public class Q3 {
    public static void main (String[] args) {
        Scanner sc = new Scanner(System.in);
        // 读取学生总人数
        int n = sc.nextInt();
        sc.nextLine(); // 消去数字输入后残留的换行符
        // 动态初始化答案数组
        char answer[][] = new char[n][10];
        for (int i = 0; i < n; i++) {
            String inputAns = sc.nextLine().trim();
            answer[i] = inputAns.toCharArray();
        }
        sc.close();

        char keys[] = {'D','B','D','C','C','D','A','E','A','D'};
        double[] student = new double[answer.length];
        // 原有计分逻辑完全保留
        for(int i = 0; i < answer.length; ++i)
        {
            double right = 0;
            double wrong = 0;
            double w =0;
            for(int j = 0; j < answer[i].length; ++j)
            {
                if(answer[i][j] == keys[j]) {
                    ++right;
                }
                if(answer[i][j] != keys[j]) {
                    ++wrong;
                    w = wrong - (wrong * 0.25);
                }
            }
            student[i] = right + w ;
        }
        // 格式化输出匹配要求格式
        for(int i = 0; i < student.length; ++i)
            System.out.printf("Student %d: %.2f%n", i+1, student[i]);
    }
}

核心修改说明

  • 引入Scanner工具类实现控制台输入接收
  • 删除硬编码的答案数组,改为先读取学生人数后动态创建对应长度的二维数组
  • 逐行读取用户输入的答案字符串,转为字符数组存入答案数组
  • 调整输出语句为格式化输出,自动保留两位小数,与要求的输出示例格式一致
  • 原有计分、扣分规则完全未修改,和原代码逻辑保持一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:36:02