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");
}