当前位置: 首页 > 知识库问答 >
问题:

在并行数组中按字母顺序排序like分数

皮承基
2023-03-14

对于一项作业,我必须要求学生人数。提示用户输入学生的lastname和分数,然后按降序对分数排序并显示。我已经做了所有这些,但不知道如何排序的名字,如果他们有相同的分数。

约翰33岁

亚当33

菲尔22

我无法得到所需的输出。我通常能解决这类问题,但这个问题让我分崩离析…请救命!

import java.util.*;

public class className
{
    public static void main(String[] args)
    {
        //Scanner input for # of students
        Scanner input = new Scanner(System.in);
        System.out.print("Enter the number of students: ");
        int numofstudents = input.nextInt();
        System.out.println();

        //Initializes an array of strings to the size of the # of students
        String[] names = new String[numofstudents];

        //Initializes an array of ints to the size of the # of students
        int[] array = new int[numofstudents];

        //For loop which asks for each students name and score until # of students reached
        for(int i = 0; i < numofstudents; i++)
        {
            System.out.print("Enter the student's lastname: ");
            names[i] = input.next();
            System.out.print("Enter the student's score: ");
            array[i] = input.nextInt();
            System.out.println();
        }
        //Sorts the arrays for names and scores of students
        selectionSort(names, array);
        //Output
        System.out.println();
        System.out.println();
        System.out.println("Number of Students: " + numofstudents);
        //System.out.println(Arrays.toString(names));
        for(int i = 0; i < numofstudents; i++)
        {
            System.out.println(names[i] + ": " + array[i]);
        }
    }

    public static void selectionSort(String[] names, int[] array) {
        for(int i = array.length - 1; i >= 1; i--) {
            String temp;
            int currentMax = array[0];
            int currentMaxIndex = 0;
            for(int j = 1; j <= i; j++) {
                if (currentMax > array[j]) {
                    currentMax = array[j];
                    currentMaxIndex = j;
                }
            }
                if (currentMaxIndex != i) {
                    temp = names[currentMaxIndex];
                    names[currentMaxIndex] = names[i];
                    names[i] = temp;
                    array[currentMaxIndex] = array[i];
                    array[i] = currentMax;
                }
        }
    }
}

共有1个答案

宗政卓
2023-03-14

实际上有两个排序要做。无论分数是多少,都要开始按字母顺序对数组进行排序。然后,根据分数对数组排序,就可以得到结果。

编辑:在按分数排序时,当t[i]=t[i-1]时应停止

 类似资料:
  • 问题内容: 我得到了一个数组(请参阅下面的数组中的一个对象),我需要使用JavaScript按名字排序。我该怎么做? 问题答案: 假设您有一个数组。您可以使用并传递一个接受两个参数并进行比较的函数(比较器) 它应该返回 如果第一个参数小于第二个参数,则为负数(应在结果数组的第二个参数之前放置) 如果第一个参数较大,则为正数(应放在第二个参数之后) 如果这两个元素相等,则为0。 在我们的情况下,如果

  • 问题内容: myArray = [Step 6, Step 12, Step 5, Step 14, Step 4, Step 11, Step 16, Step 9, Step 3, Step 13, Step 8, Step 2, Step 10, Step 7, Step 1, Step 15] 如何以这种方式在上面对这个数组排序? 我很快使用了此功能,但它是按这种方式排序的 问题答案: 另

  • 问题内容: 我有这个: 和[电影]数组。如何按名称的字母顺序对数组进行排序?我试过了: 和 但这不起作用,因为我没有访问电影的名称属性。 问题答案: 在传递给的闭包中,比较要排序的属性。像这样: 或以下要绕过案例的案例: 旁注: 通常,只有类型以大写字母开头;我建议使用and ,而不是and 。 例如,在操场上: 将按顺序 Swift5更新

  • 问题内容: 我是Java的新手,正在尝试按字母顺序排列术语的arrayList。(一个术语定义为一个字符和一个整数)(例如 我的代码如下: 为什么这不起作用?以及我该如何完成呢?我的arrayList称为术语,填充有Term类型 问题答案: 您在这行代码中遇到的问题。您的课程不是So 的类型,这两个对象将基于哪个属性或条件方法? 您必须使您的类为Comparable类型。和,根据您的需要覆盖该方法

  • 问题内容: 我有一些带有名称字段的文档。我正在使用名称字段的分析版本进行搜索和排序。排序是在一个级别上进行的,即名称首先是按字母顺序排序的。但是在字母列表中,名称是按字典顺序而不是按字母顺序排序的。这是我使用的映射: 谁能提供相同的解决方案? 问题答案: 深入研究Elasticsearch文档,我偶然发现了这一点: 排序和排序规则 不区分大小写的排序 假设我们有三个用户文档,其名称字段分别包含Bo

  • 问题内容: 我在mysql排序中寻找一些调整,我通常从表中选择记录,然后按Name(varchar)ASC排序记录, 但编号始终是第一位的 这是我的问题的一些示例( 注意。mysql首先用0-9排序记录 ) 我想要的是字母顺序,然后是数字 所需的输出 问题答案: 使用以下子句: