**7.17(对学生排序)编写一个程序,提示用户输入学生个数、学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名。假定姓名是不包含空格的字符,使用next方法读取

  • 题目
    • 题目描述
    • 破题
  • 代码
    • 运行实例

题目

题目描述

**7.17(对学生排序)编写一个程序,提示用户输入学生个数、学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名。假定姓名是不包含空格的字符,使用next()读取

破题

  1. 主方法:获取学生个数,作为姓名和成绩两个数组的长度
  2. 主方法:使用for循环获取学生姓名和成绩,学生姓名与成绩交替获取,并赋值给两个数组的对应位置
  3. 主方法:调用自定义方法sort(),传入两个数组并进行排序,返回值是排序后成绩对应的姓名数组
  4. sort方法:在对成绩数组进行排序(交换位置)的同时,对姓名也做同样交换位置的操作
  5. 主方法:输出返回的数组

代码

import java.util.Arrays;
import java.util.Scanner;public class Test7_17 {public static void main(String[] args) {//1. 主方法:获取学生个数,作为姓名和成绩两个数组的长度Scanner input = new Scanner(System.in);System.out.print("输入学生个数:");int length = input.nextInt();//1+. 声明两个数组String[] names = new String[length];int[] scores = new int[length];//2. 主方法:使用for循环获取学生姓名和成绩,学生姓名与成绩交替获取,并赋值给两个数组的对应位置System.out.print("输入姓名成绩:");for (int i = 0 ; i < length ; i++){names[i] = input.next();scores[i] = input.nextInt();}//3. 主方法:调用自定义方法sort(),传入两个数组并进行排序,返回值是排序后成绩对应的姓名数组String[] names_feedback = new String[length];names_feedback = sort(names, scores);//5. 主方法:输出返回的数组System.out.print(Arrays.toString(names_feedback));}//4. sort方法:在对成绩数组进行排序(交换位置)的同时,对姓名也做同样交换位置的操作public static String[] sort(String[] names, int[] scores){//1. 声明一个String数组(names_feedback)用于返回姓名String[] names_feedback = new String[names.length];//2. 使用for循环控制遍历int index = -1;     // 保存最大值下标for (int i = 0 ; i < names.length ; i++) {//调用自定义方法list_max(),传入scores数组并接收除负数外最大值的下标index = list_max(scores);//上面接收到的最大值下标index,此时for循环为第i+1次//names_feedback[i]=names[index]; 同时将scores[index]=-1names_feedback[i]=names[index];scores[index]=-1;}//3. 返回names_feedback数组return names_feedback;}//4+ 自定义方法list_max(),传入scores数组并接收除负数外最大值的下标public static int list_max(int[] scores){// 保存最大值的变量temp_max和最大值的下标temp_indexint temp_max = 0, temp_index = -1;// 获取scores长度为lengthint length = scores.length;// 使用for循环获取最大值(负数不计)for (int i = 0 ; i < length ; i++){if (temp_max < scores[i] && scores[i] >= 0){temp_max = scores[i];temp_index = i;}}// 返回保存的最大值下标temp_indexreturn temp_index;}
}

运行实例

输入学生个数:3
输入姓名成绩:zhang 96 wang 95 li 94
[zhang, wang, li]

Java黑皮书课后题第7章:**7.17(对学生排序)编写一个程序,提示用户输入学生个数、学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名。假定姓名是不包含空格的字符,使用next()读取相关推荐

  1. Java黑皮书课后题第5章:*5.46(倒排一个字符串)编写一个程序,提示用户输入一个字符串,然后以反序显示该字符串

    5.46(倒排一个字符串)编写一个程序,提示用户输入一个字符串,然后以反序显示该字符串 题目 题目概述 破题 运行示例 代码 题目 题目概述 5.46(倒排一个字符串)编写一个程序,提示用户输入一个字 ...

  2. Java黑皮书课后题第11章:11.1(Triangle类)设计一个名为Triangle的类来继承GeometricObject类。该类包括:

    画出Triangle类和GeometricObject类的UML图,并实现这些类.编写一个测试程序,提示用户输入三角形的三条边.颜色以及一个boolean值表明该三角形是否填充.程序需要根据输入创建一 ...

  3. Java黑皮书课后题第2章:*2.8(当前时间)程序清单2-7给出了显示当前格林尼治时间的程序。修改这个程序,提示用户输入相对于GMT的时区偏移量,显示在这个特定时区的时间

    *2.8(当前时间)程序清单2-7给出了显示当前格林尼治时间的程序.修改这个程序,提示用户输入相对于GMT的时区偏移量,显示在这个特定时区的时间 题目 题目描述 运行示例 程序清单2-7(非本题代码) ...

  4. Java黑皮书课后题第10章:*10.26(计算器)修改程序清单7-9,接收一个字符串表达式,其中操作符和操作数由0到多个空格隔开

    第10章:*10.26(计算器) 题目 程序清单7-9 本题代码:大幅优化升级 题目 程序清单7-9 对代码进行了修改:原代码将"."认做乘号,修改后将"*"作 ...

  5. Java黑皮书课后题第5章:5.2(重复加法)程序清单5-4产生了5个随机减法问题。改写该程序,使它产生10个随机加法问题,加数时两个1到15之间的整数。显示正确答案的个数和完成测试的时间

    5.2(重复加法)程序清单5-4产生了5个随机减法问题.改写该程序,使它产生10个随机加法问题,加数时两个1到15之间的整数.显示正确答案的个数和完成测试的时间 题目 题目概述 程序清单5-4 破题 ...

  6. Java黑皮书课后题第5章:*5.16(找出一个整数的因子)编写程序,读入一个整数,然后以升序显示它的所有最小因子。例如,若输入的整数是120,那么输出就应该是:2、2、2、3、5

    *5.16(找出一个整数的因子)编写程序,读入一个整数,然后以升序显示它的所有最小因子.例如,若输入的整数是120,那么输出就应该是:2.2.2.3.5 题目 题目概述 代码:[点击这里快速跳转推荐方 ...

  7. Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类

    Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类) 题目 缺陷 UML图 代码 Test02_MyDate.java:用于参考的My ...

  8. Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的

    Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...

  9. Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字

    Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字 题目 代码 结果 题目 都在上面 代码 import java.math.B ...

  10. Java黑皮书课后题第10章:*10.13(几何:MyRectangle2D类)定义MyRectangle2D类

    Java黑皮书课后题第10章:10.3 题目 程序 代码 Test13.java Test13_MyRectangle2D.java 运行 UML 题目 程序 Test13.java:测试程序 Tes ...

最新文章

  1. 去年秋招,我学长拿了7个Offer,他是怎么做到的?
  2. java编写代码时易出错_归纳:编写Java程序最容易犯的21种错误
  3. 对话AI大师Bengio:AI不应变成军备竞赛
  4. 搜索引擎提交工具_钦州SEO优化_SEO工具常用的有哪些大盘点,做SEO优化不再累...
  5. 单例模式中的懒汉式以及线程安全性问题
  6. 服务降级的概念及应用手段
  7. GIS集成技术之二:数据集成
  8. php json to object,PHP JSON_FORCE_OBJECT函数实现强转对象
  9. 使用waitgroup控制协程退出
  10. CCF201712-1 最小差值(100分)【序列处理】
  11. LINUX安装C#开发环境
  12. 微信小程序的基础实现
  13. 区块链升为国家战略,它就升天了么?
  14. python 经验模态分解_心电信号去噪4--经验模态分解法(EMD)
  15. kali linux安装谷歌浏览器
  16. Task watchdog got triggered错误
  17. OSPF的DR/BDR的选举规则,数据包,接口网络
  18. 邮件服务器没有MX类型,mx记录和邮件服务器的关系究竟是什么?
  19. swoole开发多人在线游戏新手教程
  20. 反汇编系列(一)——工具篇

热门文章

  1. 拔得头筹 | 阿里云混合云荣膺IPv6最佳实践奖
  2. 浅谈云原生架构的 7 个原则
  3. 重磅发布!阿里云云效《阿里巴巴DevOps实践指南》
  4. 看Quick Audience 如何有效提升营销活动管理效率
  5. 电商搜索能力解读-实体识别(NER)
  6. 从上千篇论文脱颖而出,支付宝论文凭什么获得WWW2020评委认可?
  7. 闰年的判断方法_平年还是闰年?看一、二季度天数是否一样多就知道
  8. 实时光线追踪技术:业界发展近况与未来挑战
  9. Flashback Data Archive(转)
  10. linux日志分析与痕迹清理