Java完成——判断题批改系统

题目:
XX学校有n人进行了一次模考,试卷上有m道填空题,现要进行打分。
要求:
1.人数,题数,标准答案均由用户提供。
2.标准答案和学生答案必须为String类型。
3.返回每个学生得分。
4.返回最高得分人数,返回所有最高得分本人、分数和答案。

import java.util.Arrays;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
       forReady();
    }

    public static void forReady() {
        Scanner scan = new Scanner(System.in);
        System.out.println("========学生人数========");
        int students = scan.nextInt();
        System.out.println("========题的数目========");
        int questions = scan.nextInt();
            System.out.println("========标准答案========");
            String rightAnswers = scan.next();
        int[] grads = new int[students];
        String[] s = new String[students];
        System.out.println("========学生答案========");
        for (int i = 0; i < students; i++) {
            int j = i + 1;
            System.out.print(j + "号学生答案为: ");
             s[i] = scan.next();
        }
        System.out.println("========得分统计========");
        for (int i = 0; i < students; i++) {
            grads[i] = getStudentsGrad(s[i], rightAnswers);
            int j = i + 1;
            System.out.println(j + "号学生得分为: " + grads[i]);
        }
        System.out.println("========优秀名单========");
        int[] bestGradSub = findBestGrads(grads);
        System.out.println("成绩最高的人数为: " + bestGradSub.length);
        System.out.println("分别为: ");
        for (int i: bestGradSub
             ) {
            int j = i + 1;
            System.out.println(j + "号学生" + " 成绩:" + grads[i] + " 答案:" + s[i]);
        }


    }
    public static  int getStudentsGrad(String s, String rightAnswers) {
        int grad = 0;
        for (int i = 0; i < s.length(); i++) {
            if(s.charAt(i) == rightAnswers.charAt(i)) {
                 grad += 1;
            }
        }
        return grad;
    }

    public static int[] findBestGrads(int[] grad) {
        int[] gClone = Arrays.copyOf(grad, grad.length);
        Arrays.sort(gClone);
        int count = 0;
        for (int i = 0; i < grad.length; i++) {
            if(grad[i] == gClone[gClone.length - 1]) {
             count ++;
            }
        }
        int[] arraysBestGrads = new int[count];
        int j = 0;
        Arrays.sort(gClone);
        for (int i = 0; i < grad.length; i++) {
            if(grad[i] == gClone[gClone.length - 1]) {
                arraysBestGrads[j] = i;
                j++;
            }
        }
        return arraysBestGrads;
    }
}

运行结果:

========学生人数========
1
========题的数目========
2
========标准答案========
AB
========学生答案========
1号学生答案为: AC
========得分统计========
1号学生得分为: 1
========优秀名单========
成绩最高的人数为: 1
分别为: 
1号学生 成绩:1 答案:AC



========学生人数========
10
========题的数目========
12
========标准答案========
ACBCDBCDCADC
========学生答案========
1号学生答案为: ADCBCDCADCBD
2号学生答案为: ADCDBCDCADCB
3号学生答案为: ADCCCDBCDADC
4号学生答案为: ADCDCBBBBBBB
5号学生答案为: AAAAAAAAAAAA
6号学生答案为: CCCCCCCCCCCC
7号学生答案为: DDDDDDDDDDDD
8号学生答案为: BBBBBBBBBBBB
9号学生答案为: DDCCBBAADDCB
10号学生答案为: AADDCCDDAAAD
========得分统计========
1号学生得分为: 2
2号学生得分为: 1
3号学生得分为: 5
4号学生得分为: 2
5号学生得分为: 2
6号学生得分为: 5
7号学生得分为: 3
8号学生得分为: 2
9号学生得分为: 2
10号学生得分为: 3
========优秀名单========
成绩最高的人数为: 2
分别为: 
3号学生 成绩:5 答案:ADCCCDBCDADC
6号学生 成绩:5 答案:CCCCCCCCCCCC

猜你喜欢

转载自blog.csdn.net/Shangxingya/article/details/104906958
今日推荐