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
相关产品推荐
相关产品推荐

