【头歌】【educoder】【java】成绩排序

题目

        给出班里某门课程的成绩单,请你按成绩从高到低对成绩单排序输出,如果有相同分数则名字字典序小的在前。

输入格式

        第一行为 n(0<n<20),表示班里的学生数目;

        接下来的 n 行,每行为每个学生的名字和他的成绩, 中间用单个空格隔开。名字只包含字母且长度不超过 20,成绩为一个不大于 100 的非负整数。

输出

        把成绩单按分数从高到低的顺序进行排序并输出,每行包含名字和分数两项,之间有一个空格。

输入样例

  1. 4
  2. Kitty 80
  3. Hanmeimei 90
  4. Joey 92
  5. Tim 28

输出样例

  1. Joey 92
  2. Hanmeimei 90
  3. Kitty 80
  4. Tim 28

 【Java代码及解题思路】

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int n;
        Scanner scanner = new Scanner(System.in);
        n = scanner.nextInt();
        // 定义Student数组
        Student[] students = new Student[n];
        // 赋值
        for(int i = 0;i<n;i++){
            String name = scanner.next();
            int grade = scanner.nextInt();
            Student student = new Student();
            student.setName(name);
            student.setGrade(grade);
            students[i] = student;
        }
        // 循环每次选出最大的一个
        for(int i = 0;i<n;i++){
            // 索引
            int max = 0;
            // 循环
            for(int j = 0;j<n;j++){
                // 先判断成绩:当前Student和最大的Student哪个更大
                if(students[j].getGrade()>students[max].getGrade()){
                    // 若当前比最大还大,则更新max
                    max = j;
                }else if(students[j].getGrade()==students[max].getGrade()){ //若二者成绩相等,则判断姓名
                    // 姓名小的优先,更新max
                    if(students[j].getName().compareTo(students[max].getName())<0){
                        max = j;
                    }
                }
            }
            // 输出当前最大的一个Student的姓名和成绩
            System.out.println(students[max].getName()+" "+students[max].getGrade());
            //  输出完后直接把这个最大的变成最小,成绩赋零
            students[max].setName("kill");
            students[max].setGrade(0);
        }
    }
}

// 定义Student类
class Student{
    // 成员变量
    String name;
    int grade;

    // get and set 方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getGrade() {
        return grade;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 头歌educoderjava面向对象是指在Java编程中,采用面向对象的编程思想,将程序中的数据和操作封装成对象,通过对象之间的交互来完成程序的功能。这种编程方式可以提高代码的可读性、可维护性和可扩展性,使程序更加灵活和高效。 ### 回答2: Educoder Java课程中的头歌是关于面向对象编程的内容。面向对象编程是一种编程思想,通过将数据和操作数据的方法封装在一起,以对象的形式组织和管理代码,提高代码的可维护性和可扩展性。 在Java中,面向对象编程的核心是类和对象。类是一种自定义的数据类型,可以定义类的属性和方法来描述对象的特征和行为。而对象是类的一个实例化,具有类属性和方法的特征和行为。 在面向对象编程中,还有三个重要的概念:封装、继承和多态。封装是指将数据和方法封装在一起,对外部隐藏其实现细节,只提供接口给外部使用。继承是指子类继承父类的属性和方法,可以在子类中添加新的属性和方法或覆盖父类的方法。多态是指同一对象在不同情况下的不同表现形式,比如通过子类对象调用重写的父类方法。 Java还提供了接口、抽象类、枚举等特性来扩展面向对象编程的功能,并且有丰富的类库可以方便地操作常见的数据结构和算法。 在Educoder Java课程中,学习面向对象编程可以让我们更好地组织和管理代码,提高代码的可读性、可维护性和可扩展性,从而更好地完成编程任务。同时也可以为后续学习Java Web开发和Android移动应用开发打好基础。 ### 回答3: Educoder Java面向对象是一门面向对象的编程语言课程,学习者将通过此课程学习Java编程语言中的面向对象编程思想,并学习如何使用Java语言进行面向对象编程的实践操作。 在Java语言中,所有的数据和方法都是以类的形式组织的,因此,学生需要掌握类、对象、封装、继承和多态等面向对象编程的核心概念。 学生将学习到Java语言中的类和对象的定义方法,如何定义类的属性和方法,如何创建对象并调用对象的属性和方法。另外,学生还将了解Java语言中的访问控制修饰符,如何使用封装性来保护类的属性和方法,以及如何使用继承来重用代码。 在本课程中,学生还将学习Java中的多态、抽象类和接口等概念以及如何使用它们来设计高效的程序。 此外,本课程还涵盖了Java中的异常处理、文件IO等实际应用场景,帮助学生掌握Java语言的完整编程技能。 综上所述,Educoder Java面向对象课程将为学生提供一个全面而深入的Java编程语言的学习体验,让学生掌握Java语言的核心概念和技能,为学生的未来发展奠定坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值