为了账号安全,请及时绑定邮箱和手机立即绑定

请大神帮忙看一下,为什么运行可以通过,但排序后的成绩却输不出来呢,能否帮忙改一下?

请大神帮忙看一下,为什么运行可以通过,但排序后的成绩却输不出来呢,能否帮忙改一下?

月饼啦啦啦 2016-11-03 22:36:12
public class student{ String name,id; double score1,score2,score3;    double sum; int mingci; student(){ }; student(String n,String i,double s1,double s2,double s3) { name=n; id=i; score1=s1; score2=s2; score3=s3; sum=s1+s2+s3; } static void selectsort(student a[]) { for(int i=0;i<a.length;i++) { student t=new student(); for(int j=i;j<a.length;j++) { if(a[i].sum<a[j].sum) { t=a[i]; a[i]=a[j]; a[j]=t; } } } } static void out(student a[]) { for(int i=0;i<a.length;i++) System.out.println(" "+"姓名:"+a[i].name+" "+"学号:"+a[i].id+"成绩:"+a[i].score1+" "+a[i].score2+" "+a[i].score3); }  static void print(student a[]) { for(int i=0;i<a.length;i++) a[i].mingci=i+1; for(int i=0;i<a.length;i++)     { if(a[i].sum==a[i-1].sum) {a[i].mingci=a[i-1].mingci;} else  {a[i].mingci=a[i-1].mingci+1;} System.out.println(" "+"姓名:"+a[i].name+" "+"学号:"+a[i].id+"总分:"+" "+a[i].sum+"名次:"+a[i].mingci); } } public static void main(String args[]) { student s[]=new student[5]; s[0]=new student("张三","001",80,90,85); s[1]=new student("李斯","002",80,80,85); s[2]=new student("王五","003",70,90,85); s[3]=new student("赵六","004",80,90,80); s[4]=new student("李云","005",80,75,85);    System.out.println("排序前");    student.out(s);    student.selectsort(s);    System.out.println("排序后");    student.print(s); }}
查看完整描述

2 回答

已采纳
?
望远

TA贡献1017条经验 获得超1032个赞

a[i].mingci=a[i-1].mingci;//这一条语句有数组下标越界异常,当i==0时i-1==-1


查看完整回答
1 反对 回复 2016-11-03
  • 月饼啦啦啦
    月饼啦啦啦
    谢啦,可是那要怎么改才能使输出的名次正确呢,比如有并列名次,则输出1,2,2,3,4名,我这样写,可输出的还是1,2,3,4,5名 for(int i=0;i<a.length;i++) { a[i].mingci=i+1; for(int j=i;j<a.length;j++) { if(a[i].sum==a[j].sum) {a[j].mingci=a[i].mingci;} else {a[j].mingci=a[i].mingci+1;} }
?
望远

TA贡献1017条经验 获得超1032个赞

for(int i=0,k=0;i<a.length;i++) 
{	
    a[i].mingci=++k; 
    for(int j=i+1;j<a.length;j++) 
    {	
        if(a[i].sum==a[j].sum)
         {
             a[j].mingci=a[i].mingci;
             i=j;
         } 
     }
 }

试试这个

查看完整回答
反对 回复 2016-11-06
  • 2 回答
  • 0 关注
  • 1098 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信