注册 登录
编程论坛 JAVA论坛

新手自制一个简单的学生管理系统求助

寒冰003 发布于 2015-08-04 17:25, 775 次点击
程序代码:
import java.util.*;
public class guanlixitong1 {
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        System.out.println("请输入学生人数:");
        int renshu=in.nextInt();//存储学生人数
        System.out.println("请输入课程数目:");
        int courseNum=in.nextInt();//存储课程数目
        String[] name=new String[renshu];//声明一个数组String用来存储学生的姓名
        String[] course=new String[courseNum];//声明一个String数组来存储课程的名字
        int[][] number=new int[renshu][courseNum];//声明一个int数组来存储各科成绩
        int[] sum=new int[renshu];//声明一个int数组来存储总分
        int[] avg=new int[renshu];//声明一个int数组来存储平均分
        String[] str=new String[renshu];
        for(int i=0;i<course.length;i++){
            System.out.println("请输入第"+(i+1)+"门课程的名字");
            course[i]=in.next();
        }
        for(int i=0;i<renshu;i++){
            int s=0;
            String str11="";
            System.out.println("请输入学生的姓名:");
            name[i]=in.next();//用来存储学生的姓名
            for(int j=0;j<courseNum;j++){
                System.out.println("请输入学生"+name[i]+course[j]+"成绩");
                number[i][j]=in.nextInt();//用来存储特定学生的特定成绩
                s+=number[i][j];//求总分
                str11+=number[i][j]+"\t";//把一个学生各科成绩整合为字一个字符串符串
            }
            sum[i]=s;
            avg[i]=s/courseNum;
            str[i]=name[i]+"\t"+str11+sum[i]+"\t"+avg[i];//把学生名字,各科成绩,总分,平均分整合为一个字符串
        }
        for(int i=0;i<str.length-1;i++){            //冒泡排序
            for(int j=0;j<str.length-1;j++){
                if(sum[j]<sum[j+i]){
                        
                    String t2=str[j];
                    str[j]=str[j+1];
                    str[j+1]=t2;
                }
            }
        }                                            //冒泡排序
        /*
         *输出效果
         
*/
        System.out.print("学生");
        for(int i=0;i<course.length;i++){
            System.out.print("\t"+course[i]);//循环输出每个科目的名称
        }
        System.out.print("\t总分\t平均分\t排行榜");
        System.out.println();
        for(int i=0;i<renshu;i++){
            System.out.println(str[i]+"\t第"+(i+1)+"名");
        }
    }
}
排序不正确,感觉是冒泡排序那里出了问题,可是不知道具体错哪了,求助
只有本站会员才能查看附件,请 登录
附张运行结果图,输入的数据和输出都正确,就是排序不对求大神赐教
5 回复
#2
寒冰0032015-08-04 17:39
补充一下,我的思路是把学生名字,各科成绩,总分,平均分整合为一个字符串,然后根据总分对比,然后用冒泡法把他们排序输出
#3
诸葛欧阳2015-08-06 21:57
程序代码:
for(int i=0;i<str.length-1;i++){            //冒泡排序
            for(int j=0;j<str.length-1;j++){
                if(sum[j]<sum[j+i]){  //这里有问题
                        
                    String t2=str[j];
                    str[j]=str[j+1];
                    str[j+1]=t2;
                }
            }
        }               

既然知道是排序的问题你就应该好好检查排序算法,这是排错的基本方法
#4
sunsulei2015-08-07 02:47
回复 3楼 诸葛欧阳
应该是j+1吧。 刚开始学习java语言。
#5
不懂才问2015-08-07 07:30
学习一下
#6
寒冰0032015-08-09 17:03
回复 3楼 诸葛欧阳
额额 谢了,我都没注意把i和1敲错了  太像了,看几遍没看出来
1