")
对输入的学生信息按照数学成绩、Java成绩、英语成绩分别进行升序和降序。
建议你把学生信息封装成一个类,直接用基本类型数组在排序的时候比较麻烦。(比如按成绩排序时,同时需要调整姓名数组等)
下面是一个例子,没有写成菜单的样式,你根据需要改一下即可:
Student类,保存学生信息,可以根据需要增删成员:
public class Student {
public String name; //学生姓名
public int id; //学号
public int math; //数学成绩
public int java; //java成绩
public int eng; //英语成绩
public void show(){
System.out.print("学号:"+ id);
System.out.print(" 姓名:"+name);
System.out.print(" 数学成绩:"+ math);
System.out.print(" JAVA成绩:"+java);
System.out.print(" 英语成绩:"+eng);
System.out.println();
}
}
主程序代码(只写了录入和排序的方法,也没有做成菜单,根据你的需要调整一下即可):
import java.util.Scanner;
public class Test {
public static Scanner sc = new Scanner(System.in);
//录入数据
public static int input(Student[] stu,int nmb){
boolean flag = true;
while(flag){
stu[nmb] = new Student();
System.out.print("请输入学号:");
stu[nmb].id = sc.nextInt();
System.out.print("请输入姓名:");
stu[nmb].name = sc.next();
System.out.print("请输入数学成绩:");
stu[nmb].math = sc.nextInt(); //这里按照整数来输入,如果是浮点数,需要修改Student类中的数据类型
System.out.print("请输入JAVA成绩:");
stu[nmb].java = sc.nextInt(); //这里按照整数来输入,如果是浮点数,需要修改Student类中的数据类型
System.out.print("请输入英语成绩:");
stu[nmb].eng = sc.nextInt(); //这里按照整数来输入,如果是浮点数,需要修改Student类中的数据类型
nmb += 1;
boolean out = true;
while(out){
System.out.print("是否继续输入(Y/N):");
String s = sc.next();
if(s.charAt(0)=='y' || s.charAt(0)=='Y'){
out = false;
}else if(s.charAt(0)=='n' || s.charAt(0)=='N'){
flag = false;
out = false;
}
}
}
return nmb;
}
//排序,如果sx大于0,表示升序,否则表示降序排列,flag=1表示按照数学成绩排序,=2表示按java成绩,=3表示按英语排序
public static void sort(Student[] stu,int nmb,int flag,int sx){
int i,j;
Student tmp;
for(i=0;i<nmb-1;i++){
for(j=0;j<nmb-1-i;j++){
if(sx>0){//升序
if( (flag == 1 && stu[j].math > stu[j+1].math) ||
(flag==2 && stu[j].java > stu[j+1].java ) ||
(flag==3 && stu[j].eng > stu[j+1].eng ) ){
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1]= tmp;
}
}else{//降序
if( (flag == 1 && stu[j].math < stu[j+1].math) ||
(flag==2 && stu[j].java < stu[j+1].java ) ||
(flag==3 && stu[j].eng < stu[j+1].eng ) ){
tmp = stu[j];
stu[j] = stu[j+1];
stu[j+1]= tmp;
}
}
}
}
//排序后输出
for(i=0;i<nmb;i++)
stu[i].show();
}
public static void main(String[] args) {
Student[] stu = new Student[100]; //保存学生信息
int nmb = 0; //实际的学生数量
//输入数据
nmb=input(stu,nmb);
//按数学成绩升序排序
sort(stu,nmb,1,1);
//按数学成绩降序排序
sort(stu,nmb,1,0);
//按JAVA成绩升序排序
sort(stu,nmb,2,1);
//按JAVA成绩降序排序
sort(stu,nmb,2,0);
//按英语成绩升序排序
sort(stu,nmb,3,1);
//按英语成绩降序排序
sort(stu,nmb,3,0);
}
}