gpt4 book ai didi

java - 如何在 Java 中获取 String 数组索引以匹配 Int 数组索引

转载 作者:行者123 更新时间:2023-12-01 17:19:54 31 4
gpt4 key购买 nike

过去几天我一直在研究这个程序,并且确切地知道我想做什么,但不知道如何去做。基本上我有两个数组,一个是包含学生姓名的字符串,另一个数组是包含学生分数的整数。两个数组值都是用户输入的输入。最终我想按从最高分到最低分的降序打印出相应的名称和分数。现在,我的问题出在代码的末尾,我一生都无法弄清楚如何使两个索引匹配 println 目的(我已经评论了问题所在。我按降序打印分数从最高到最低,但我无法让名称符合。任何有关如何解决此问题的建议将不胜感激。

import java.util.Scanner;

public class TestArray
{
public static void main(String[] args)
{

Scanner input = new Scanner(System.in);

System.out.println("Enter the number of students in your class: ");
int number = input.nextInt();

System.out.println("Now enter the " + number + " students names");
String[] nameList = new String[number];

for (int i = 0; i < number; i++) {
nameList[i] = input.next();
}

System.out.println("Next, enter the score of each student: ");
int[] numGrades = new int[number];
for (int i = 0; i < number; i++) {
numGrades[i] = input.nextInt();
}

for (int i = 0; i < number; i++) {
int currentMax = numGrades[i];
int currentMaxIndex = i;
int currentNameIndex = i;

for (int j = i + 1; j < number; j++) {
if (currentMax < numGrades[j]) {
currentMax = numGrades[j];
currentMaxIndex = j; // index max
currentNameIndex = j;
}
}

if (currentMaxIndex != i) {
numGrades[currentMaxIndex] = numGrades[i];
numGrades[i] = currentMax;
}

if (currentNameIndex != i) {
nameList[currentNameIndex] = String.valueOf(nameList[i]);
// need nameList[i] to = the current index of the numGrades array HOW???
}
}

for (int i = 0; i < number; i++) {
System.out.println(nameList[i] + " had a score of " + numGrades[i]);
}
}
}

最佳答案

为了使其正常工作,您必须保持数组同步。当您移动成绩时,必须以完全相同的方式移动相应的名称,以便名称数组和成绩数组始终协调。

你可能已经明白,从代码中很难看出。如果是这样,您将需要在同一个 block ({}) 中移动名称,就像等级移动一样,这将是最有意义的,或者您需要将必要的整数存储在某处,以便另一个 block 可以使用他们。

<小时/>

补充答案:

你有两个数组,其值类似于

peter    45
alice 53
garth 50

(我们希望这不是 100 分的考试)

您正在对第二个数组进行排序;您的最大值等都与该数组中的分数有关。

假设您达到了要将 Garth 的分数与 Alice 的分数交换的程度。在某些变量或其他变量中,garth 的值为 2,alice 的值为 1,并且您将把 50 放入临时变量中,将 alice 的 53 放入位置 2,并将 garth 的 50 放入位置 1。

您要做的就是使用这些相同的索引来移动名称,因此您将 garth 放在位置 1,将 alice 放在位置 2。完成后,您将获得:

peter   45
garth 50
alice 53

您不需要任何额外的字符串位置变量;您需要将字符串放入字符串数组中与您在分数数组中移动的分数相同的位置。

关于java - 如何在 Java 中获取 String 数组索引以匹配 Int 数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19473342/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com