Java 如何仅使用其中一个数组的元素对关联数组进行排序?

Java 如何仅使用其中一个数组的元素对关联数组进行排序?,java,arrays,Java,Arrays,该任务是创建一个程序,该程序将用户名及其相应的标记组织起来,并按降序显示。我要问的是如何同时对两个数组进行排序,但只能通过比较其中一个数组的元素。作为限制,我不能使用类,只能使用关联的数组 int [] ArrMarks = new int [5]; String [] ArrNames = new String [5]; 按钮接受用户输入 for (int i = 0; i < 5; i++) { ArrNames[i] = JOptionPane.showInputDialo

该任务是创建一个程序,该程序将用户名及其相应的标记组织起来,并按降序显示。我要问的是如何同时对两个数组进行排序,但只能通过比较其中一个数组的元素。作为限制,我不能使用类,只能使用关联的数组

int [] ArrMarks = new int [5];
String [] ArrNames = new String [5];
按钮接受用户输入

for (int i = 0; i < 5; i++)
{
    ArrNames[i] = JOptionPane.showInputDialog("Enter a Name:");
    ArrMarks[i] = Integer.parseInt(JOptionPane.showInputDialog("Enter a mark:")); 
}
for(int i=0;i<5;i++)
{
ArrNames[i]=JOptionPane.showInputDialog(“输入名称:”);
ArrMarks[i]=Integer.parseInt(JOptionPane.showInputDialog(“输入标记:”);
}
显示按钮包括对代码进行排序的部分,这是我不确定的主要部分

int Hi = ArrMarks[0];
for(int i = 0; i < 5; i++) {
    if(ArrMarks[i] > Hi) {
        Hi = ArrMarks[i];
    }
}

txaDisplay.append("Names:"+"\t\t"+"Marks");
for (int i = 0; i < 5; i++) {
    txaDisplay.append(ArrNames[i]+"\t\t"+ArrMarks[i]+"\n");
}
int-Hi=ArrMarks[0];
对于(int i=0;i<5;i++){
如果(ArrMarks[i]>Hi){
Hi=ArrMarks[i];
}
}
追加(“名称:”+“\t\t”+“标记”);
对于(int i=0;i<5;i++){
追加(ArrNames[i]+“\t\t”+ArrMarks[i]+“\n”);
}

首先,我想提出一个建议。使用列表而不是数组。这种编码不是一种好的传统编码方式。我将展示处理这个问题的常规方法。如果你愿意,你可以拿这个

使用以下内容创建另一个类
Mark.java

class Mark {
    Integer mark;
    String name;

    public Integer getMark() {
        return this.mark
    }
    public void setMark(Integer mark) {
        this.mark = mark
    }
    public String getName() {
        return this.name
    }
    public void setName(String name) {
        this.name = name
    }
}
然后在当前类中创建该类的
列表

List<Mark> marks = new ArrayList<Mark>();
用途

Collections.sort(marks, new MarkComparator());
现在将对
标记的
列表
进行排序

然后,您可以以相同的方式查看列表

txaDisplay.append("Names:"+"\t\t"+"Marks");
for (Mark mark : marks)
{
    txaDisplay.append(mark.getName()+"\t\t"+mark.getMark()+"\n");
}

我的问题的解决方案需要使用排序技术对名称和标记进行排序,以便程序根据名称打印相应的标记

for(int i = 0; i < 5-1; i ++)
{
    for(int j = i +1; j < 5; j++)
{
 if (ArrMarks[i] < ArrMarks[j]) 

 {
    //sorting the names
    String temp = ArrNames[i];
    ArrNames[i] = ArrNames[j];
    ArrNames[j] = temp;

    //sorting the marks
    int temp1 = ArrMarks[i];
    ArrMarks[i] = ArrMarks[j];
    ArrMarks[j] = temp1;  

}  

}   
txaDisplay.append("Names:"+"\t\t"+"Marks"+"\n");

        txaDisplay.append(ArrNames[i]+"\t\t"+ArrMarks[i]+"\n"); 
}
for(int i=0;i<5-1;i++)
{
对于(int j=i+1;j<5;j++)
{
if(ArrMarks[i]
你的问题是什么?你的问题是什么?@Trobbins当我运行程序时,它不会对数组进行排序,我要求对我的代码稍作修改,以实现这一点。将名称和等级合并到一个类中,然后你可以使用:有趣的想法,但OP不能使用类=\
txaDisplay.append("Names:"+"\t\t"+"Marks");
for (Mark mark : marks)
{
    txaDisplay.append(mark.getName()+"\t\t"+mark.getMark()+"\n");
}
for(int i = 0; i < 5-1; i ++)
{
    for(int j = i +1; j < 5; j++)
{
 if (ArrMarks[i] < ArrMarks[j]) 

 {
    //sorting the names
    String temp = ArrNames[i];
    ArrNames[i] = ArrNames[j];
    ArrNames[j] = temp;

    //sorting the marks
    int temp1 = ArrMarks[i];
    ArrMarks[i] = ArrMarks[j];
    ArrMarks[j] = temp1;  

}  

}   
txaDisplay.append("Names:"+"\t\t"+"Marks"+"\n");

        txaDisplay.append(ArrNames[i]+"\t\t"+ArrMarks[i]+"\n"); 
}