繁体   English   中英

如何将for循环的结果存储为java中的数组? 还有其他方法可以让我以简洁的方式编写此代码吗?

[英]How to store results of for loop as an array in java? Is there any other way I can write this code neat way?

'''公共 class question6a {

public static void main(String[] args) {

'''

这是存储学生给出的答案

    char[][] answers = { { 'A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D' },
            { 'D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D' },
            { 'E', 'D', 'D', 'A', 'C', 'B', 'E', 'E', 'A', 'D' },
            { 'C', 'B', 'A', 'E', 'D', 'C', 'E', 'E', 'A', 'D' },
            { 'A', 'B', 'D', 'C', 'C', 'D', 'E', 'E', 'A', 'D' },
            { 'B', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D' },
            { 'B', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D' },
            { 'E', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D' }, };

这是检查答案的关键,无论它们是否正确。

    char[] key = { 'D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D' };

这是通过比较两个 arrays 的值来检查答案。

    for (int i = 0; i < answers.length; i++) {
        for (int j = 0; j <= 9; j++) {
            if (answers[i][j] == key[j])  // comparing elements(Chars) of two arrays.

此代码添加编号。 学生给出的正确答案。

                {int sum = 0, sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0, sum5 = 0, sum6 = 0, sum7 = 0;
                switch (i) {
                case 0:
                    sum++;
                    break;
                case 1:
                    sum1++;
                    break;
                case 2:
                    sum2++;
                    break;
                case 3:
                    sum3++;
                    break;
                case 4:
                    sum4++;
                    break;
                case 5:
                    sum5++;
                    break;
                case 6:
                    sum6++;
                    break;
                case 7:
                    sum7++;
                    break;

                }
               }

'''

        }

    }

'''

这是打印学生的结果。

    System.out.println("Student 0 got " + sum + " Marks. ");
    System.out.println("Student 1 got " + sum1 + " Marks. ");
    System.out.println("Student 2 got " + sum2 + " Marks. ");
    System.out.println("Student 3 got " + sum3 + " Marks. ");
    System.out.println("Student 4 got " + sum4 + " Marks. ");
    System.out.println("Student 5 got " + sum5 + " Marks. ");
    System.out.println("Student 6 got " + sum6 + " Marks. ");
    System.out.println("Student 7 got " + sum7 + " Marks. ");

}

}

您可以创建一个int数组来保存学生的所有分数

public static void main(String[] args) {
     char[][] answers = { 
          { 'A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D' },
          { 'D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D' },
          { 'E', 'D', 'D', 'A', 'C', 'B', 'E', 'E', 'A', 'D' },
          { 'C', 'B', 'A', 'E', 'D', 'C', 'E', 'E', 'A', 'D' },
          { 'A', 'B', 'D', 'C', 'C', 'D', 'E', 'E', 'A', 'D' },
          { 'B', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D' },
          { 'B', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D' },
          { 'E', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D' }
    };

    char[] key = { 'D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D' };

    int[] studentsMarks = new int[answers.length];

    for (int i = 0; i < answers.length; i++) {
      for (int j = 0; j < answers[i].length; j++) {
        if (answers[i][j] == key[j]) {
          studentsMarks[i] += 1;
        }
      }

      System.out.println("Student "+ (i + 1) + " got " + studentsMarks[i] + " Marks.");
    }
}

output:

Student 1 got 7 Marks.
Student 2 got 6 Marks.
Student 3 got 5 Marks.
Student 4 got 4 Marks.
Student 5 got 8 Marks.
Student 6 got 7 Marks.
Student 7 got 7 Marks.
Student 8 got 7 Marks.

您在每个循环中切换之前声明以下行,因此每次都使所有总和为零,因此您将获得最终答案 0 或 1。要获得正确的结果,请在开始 for 循环之前删除并添加此行,您也可以创建 int[] sum=new int[8] 在数组中存储为 sum[i] 而不是 sumi,如下所示。

int sum = 0, sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0, sum5 = 0, sum6 = 0, sum7 = 0;

如何使用流:

    char[] correctAnswers = { 'D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D' };
    char[][] studentAnswers = { { 'A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D' },
            { 'D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D' },
            { 'E', 'D', 'D', 'A', 'C', 'B', 'E', 'E', 'A', 'D' },
            { 'C', 'B', 'A', 'E', 'D', 'C', 'E', 'E', 'A', 'D' },
            { 'A', 'B', 'D', 'C', 'C', 'D', 'E', 'E', 'A', 'D' },
            { 'B', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D' },
            { 'B', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D' },
            { 'E', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D' }, };

    IntStream.range(0, studentAnswers.length).forEach(i ->
        System.out.println("Student Nr " + (i+1) + " has " + 
                IntStream.range(0,correctAnswers.length).filter(j -> studentAnswers[i][j] == correctAnswers[j]).count()
       + " correct answers"));

产生这些结果:

Student Nr 1 has 7 correct answers
Student Nr 2 has 6 correct answers
Student Nr 3 has 5 correct answers
Student Nr 4 has 4 correct answers
Student Nr 5 has 8 correct answers
Student Nr 6 has 7 correct answers
Student Nr 7 has 7 correct answers
Student Nr 8 has 7 correct answers

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM