**7.17(对学生排序)编写一个程序,提示用户输入学生个数、学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名。假定姓名是不包含空格的字符,使用next方法读取
题目题目描述破题代码运行实例题目
题目描述
**7.17(对学生排序)编写一个程序,提示用户输入学生个数、学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名。假定姓名是不包含空格的字符,使用next()读取
破题
主方法:获取学生个数,作为姓名和成绩两个数组的长度主方法:使用for循环获取学生姓名和成绩,学生姓名与成绩交替获取,并赋值给两个数组的对应位置主方法:调用自定义方法sort(),传入两个数组并进行排序,返回值是排序后成绩对应的姓名数组sort方法:在对成绩数组进行排序(交换位置)的同时,对姓名也做同样交换位置的操作主方法:输出返回的数组代码
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()读取