【问题标题】:How to sort Parallel Arrays from highest to lowest [closed]如何从最高到最低对并行数组进行排序[关闭]
【发布时间】:2020-06-29 18:18:58
【问题描述】:

我想对输入的名字后跟成绩进行排序,我只想对成绩进行排序

示例输入:

3 (Scanner limit) 
Hussain
 70
Omer
 60
User
 92

样本输出:

User
 92
Hussain
 70
Omer
 60

代码:

import java.util.Scanner;
import java.util.Arrays;
public class Sortingofgrades{
 public static void main(String []args){
     Scanner keyboard = new Scanner (System.in);
     int num = keyboard.nextInt();
     String name[] = new String [num];
     int grade[] = new int [num];
        for (int x = 0; x < num; x++){
                name[x] = keyboard.nextLine();
                grade[x] = keyboard.nextInt();
                Arrays.sort(grade);
                    System.out.println(name[x]+grade[x]);
            }
        }
     
 }

此代码不起作用,因为我在输入限制后收到mismatchedexception 错误

例如:

3
mismatchedexception

【问题讨论】:

  • 为什么要使用并行数组?你的问题是什么?你的代码有问题吗?请更具体。
  • 你需要一个数据结构来保存名字、分数的组合

标签: java arrays loops


【解决方案1】:

如果您想根据成绩对配对进行排序,可以使用按键排序的SortedMap,并将您的成绩作为键存储。

    SortedMap<Integer, String> map = new TreeMap<>();

    for (int i = 0; i < num; ++i){
        // get name and grade values
        map.put(grade, name);
    }

TreeMap基于红黑树结构实现,按key排序。当您打印出您的配对时,它将根据等级进行排序,因此您无需担心排序值。

【讨论】:

    猜你喜欢
    • 2019-05-29
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    相关资源
    最近更新 更多