name[5] = {Peter, James, Roger, Peter, Josę};
subject[5] = {English, Math, English, Science, Math};
grade[5] = {96, 67, 78, 84, 100};
我在这里要达到的目标是让主题表明个人已获得最高分。注意name Array中名字的重复,这是同一个人。我试图做的是使用 map 来获得结果,但是使用 3 个数组对于我目前拥有的 java 级别来说非常棘手。我想获取学生的姓名,将其与他们的成绩相匹配,然后选择成绩最高的科目,因此基本上每个学生姓名的返回都是一个值。像这样,
英语 数学 英语 数学
最佳答案
我将创建一个名为 getStudentsHighestMark 的方法,它获取姓名和成绩数据。该方法将遍历成绩并仅考虑相关学生的成绩。您需要一个 int 来跟踪您看到的该名称的最高成绩,以及该成绩对应的类(class)的字符串。遍历成绩后,只需返回学生最高分的类(class)名称。像这样:
public static void main(String[] args) {
String[] names = {"Peter", "James", "Roger", "Peter", "Jose"};
String[] subjects = {"English", "Math", "English", "Science", "Math"};
int[] grades = {96, 67, 78, 84, 100};
String petersBest = getStudentsHighestMark("Peter", names, subjects, grades);
System.out.println("Peter's best is: " + petersBest); //Peter's best is: English
String jamesBest = getStudentsHighestMark("James", names, subjects, grades);
System.out.println("James's best is: " + jamesBest); //James's best is: Math
String rogersBest = getStudentsHighestMark("Roger", names, subjects, grades);
System.out.println("Roger's best is: " + rogersBest); //Roger's best is: English
String josesBest = getStudentsHighestMark("Jose", names, subjects, grades);
System.out.println("Jose's best is: " + josesBest); //Jose's best is: Math
}
private static String getStudentsHighestMark(String name, String[] names, String[] subjects, int[] grades) {
int highestGrade = 0;
String bestCourse = "";
for(int i = 0; i < names.length; i++) {
if(names[i].equals(name) && grades[i] > highestGrade) {
highestGrade = grades[i];
bestCourse = subjects[i];
}
}
return bestCourse;
}
关于java - 我正在尝试获取一个值,同时使用来自 3 个数组的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50993755/