题目:编写程序,提示用户输入学生个数、学生姓名和他们的分数,然后按照分数的降序打印学生
的姓名。假定姓名是不包含空格的字符串,并使用Scanner类的next()方法来读取姓名
import java.util.Scanner; public class Exercise07_17 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("输入学生个数"); int number = input.nextInt(); String[] names = new String[number]; int[] grades = new int[number]; for (int i = 0; i < number; i++) { System.out.println("输入学生姓名"); //必须用方法next(),因为next()是读取分割空白元素的单个元素,而nextLine()是读取整行 String name = input.next(); names[i] = name; System.out.println("输入学生分数"); int grade = input.nextInt(); grades[i] = grade; } print(names, grades); } // 选择排序的变形 public static void print(String[] names, int[] grades) { for (int i = 0; i < names.length - 1; i++) { int gradeMax = grades[i]; String nameMax = names[i]; int indexMax = i; for (int j = i + 1; j < names.length; j++) { if (grades[j] > gradeMax) { gradeMax = grades[j]; nameMax = names[j]; indexMax = j; } } if (indexMax != i) { grades[indexMax] = grades[i]; names[indexMax] = names[i]; grades[i] = gradeMax; names[i]=nameMax; } } for (int i = 0; i < names.length; i++) { System.out.println(names[i]); } } }