Java黑皮书课后题第7章:**7.17(对学生排序)编写一个程序,提示用户输入学生个数、学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名。假定姓名是不包含空格的字符,使用next()读取
生活随笔
收集整理的這篇文章主要介紹了
Java黑皮书课后题第7章:**7.17(对学生排序)编写一个程序,提示用户输入学生个数、学生姓名和他们的成绩,然后按照学生成绩的降序打印学生的姓名。假定姓名是不包含空格的字符,使用next()读取
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
**7.17(對學生排序)編寫一個程序,提示用戶輸入學生個數、學生姓名和他們的成績,然后按照學生成績的降序打印學生的姓名。假定姓名是不包含空格的字符,使用next方法讀取
- 題目
- 題目描述
- 破題
- 代碼
- 運行實例
題目
題目描述
**7.17(對學生排序)編寫一個程序,提示用戶輸入學生個數、學生姓名和他們的成績,然后按照學生成績的降序打印學生的姓名。假定姓名是不包含空格的字符,使用next()讀取
破題
代碼
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()读取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java黑皮书课后题第7章:7.16(执
- 下一篇: Java黑皮书课后题第7章:**7.18