Java黑皮书课后题第8章:*8.3(按考分对学生排序)重写程序清单8-2,按照正确答案个数的升序显示学生
*8.3(按考分对学生排序)重写程序清单8-2,按照正确答案个数的升序显示学生
- 题目
- 题目描述
- 程序清单8-2
- 本题代码
题目
题目描述
*8.3(按考分对学生排序)重写程序清单8-2,按照正确答案个数的升序显示学生
程序清单8-2
public class qingdan {public static void main(String[] args) {// Students' answers to the questionschar[][] 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'}};//Key to the questionschar[] keys = {'D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D'};//Grade all answersfor (int i = 0 ; i < answers.length ; i++){// Grade one studentint correctCount = 0;for (int j = 0 ; j < answers[i].length ; j++){if (answers[i][j] == keys[j])correctCount++;}System.out.println("Student " + i + "'s correct count is " + correctCount);}}
}
清单运行:
Student 0's correct count is 7
Student 1's correct count is 6
Student 2's correct count is 5
Student 3's correct count is 4
Student 4's correct count is 8
Student 5's correct count is 7
Student 6's correct count is 7
Student 7's correct count is 7
本题代码
import java.util.Arrays;public class Test8_3 {public static void main(String[] args) {// Students' answers to the questionschar[][] 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'}};//Key to the questionschar[] keys = {'D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D'};// 增加:数组answers行数长度的int型数组int[] scores = new int[answers.length];//Grade all answersfor (int i = 0 ; i < answers.length ; i++){// Grade one studentint correctCount = 0;for (int j = 0 ; j < answers[i].length ; j++){if (answers[i][j] == keys[j])correctCount++;}scores[i] = correctCount;}//增加:复制scores数组int[] scores_copy = new int[scores.length];System.arraycopy(scores, 0 , scores_copy, 0 , scores.length);//增加:对scores_copy进行排序Arrays.sort(scores_copy);//增加:遍历scores_copy的元素,匹配scores数组的元素,scores的下标即为学生for (int a = 0 ; a < scores_copy.length ; a++){for (int b = 0 ; b < scores.length ; b++){if (scores_copy[a] == scores[b]){System.out.println("Student " + b + "'s correct count is " + scores_copy[a]);scores[b] = 0;}}}}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
