请问一下 我定义一个类  里面有String 和 double a[6] 长度是6我现在在其他内里面定义 这个类的对象数组 分别有x1-x5 [] 还留着一个 空的吧 作为一会临时存储a1-a5 [] 里面都放了 String double
现在我要把里面  double 排下序  然后移动1个对象里面的全部内容代码这样没错吧?
for(i=0;i<5;i++)
{
for(j=0;j<5-i-1;j++)
{
if(x[j].score[0]<x[j+1].score[0])
{
x[5].name=x[j].name;
x[j].name=x[j+1].name;
x[j+1].name=x[5].name;
for(int k=0;k<10;k++)
{

x[5].score[k]=x[j].score[k];

x[j].score[k]=x[j+1].score[k];

x[j+1].score[k]=x[5].score[k];
}
}
}
}现在报异常Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at xsglxt.Manager.paixu(Manager.java:151)
at xsglxt.Manager.main(Manager.java:39)  求教高手指点下哪有问题?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【coxo2008】截止到2008-07-22 18:57:35的历史汇总数据(不包括此帖):
    发帖的总数量:2                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:1                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:1                        结贴的总分数:0                        
    无满意结贴数:1                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:0                        
    结贴的百分比:50.00 %               结分的百分比:---------------------
    无满意结贴率:100.00%               无满意结分率:---------------------
    楼主加油
      

  2.   

    java.lang.ArrayIndexOutOfBoundsException 
    超出边界了.
      

  3.   

    for(int k=0;k <10;k++) 
    改成k <  9
      

  4.   

    看了好久没看见哪里报错x[5].name=x[j].name;
    x[j].name=x[j+1].name;
    x[j+1].name=x[5].name;难道是这里 String 不能给? 不能和int 一样覆盖?
      

  5.   

    package xsglxt;public class Student 
    {
    public String name;
    int id;
    double score[]=new double [11];
    public double getSum(int x)
    {
    double sum=0;
    for(int i=0;i<x;i++)
    {
    sum=sum+score[i];
    }
    return sum;
    }
    public double getAvg(int x)
    {
    double avg=0;
    for(int i=0;i<x;i++)
    {
    avg=avg+score[i];
    }
    avg=avg/x;
    return avg;
    }



    }
    ******************************上面是类******************************下面是main 
    package xsglxt;import java.util.Scanner;
    public class Manager 
    {
    public static void main(String[] args)
    {
    Scanner sc=new Scanner(System.in);
    System.out.print("请输入班级人数:");
    int renshu=sc.nextInt();
    String []b={"课程一","课程二","课程三","课程四","课程五","课程六","课程七"};
    int kecheng;
    boolean f=false;
    do
    {
    f=false;
    System.out.print("请输入有几门课程:");
    kecheng=sc.nextInt();
    if(kecheng>7)
    {
    System.out.println("本系统最多支持七门课程");
    f=true;
    }
    }while(f);

    Student []stus=new Student[renshu];
    input(stus,renshu,kecheng);
    display(b,stus,renshu,kecheng);
    int xuanzhe=xuanzhe();
    switch(xuanzhe)
    {
    case 1:
    update(stus,kecheng);
    display(b,stus,renshu,kecheng);
    break;
    case 2:
    paixu(b,stus,kecheng,renshu);
    display(b,stus,renshu,kecheng);
    break;
    case 3:
    System.out.print("拜拜");



    }




    }


    public static void input(Student []x,int y,int z) //输入
    {
    Scanner sc=new Scanner(System.in);
    for(int i=0;i<y;i++)
    {
    x[i]=new Student();
    System.out.print("\n请输入第"+(i+1)+"位同学的姓名:");
    x[i].name=sc.next();
    System.out.println("【请输入"+z+"门课程成绩】");
    for(int j=0;j<z;j++)
    {
    System.out.println((j+1)+"门课的成绩:");
    x[i].score[j]=sc.nextDouble();
    }
    x[i].id=i+1;
    } }
    public static void display(String []b,Student []x,int y,int z) //输出
    {

    System.out.print("\n学号\t姓名\t");
    for(int c=0;c<z;c++)
    {
    System.out.print(b[c]+"\t");
    }
    System.out.println("总分\t平均分");
    for(int i=0;i<y;i++)
    {
    System.out.print(x[i].id+"\t"+x[i].name+"\t");
    for(int j=0;j<z;j++)
    {
    System.out.print(x[i].score[j]+"\t");
    }
    System.out.println(x[i].getSum(z)+"\t"+x[i].getAvg(z));
    }
    }
    public static int xuanzhe()
    {
    Scanner sc=new Scanner(System.in);
    System.out.print("\n【请选择功能】:  1.修改\t2.排序\t3.拜拜 (选择):");
    int xuanzhe=sc.nextInt();
    return xuanzhe;
    }


    public static void update(Student []x,int y)
    {
    Scanner sc=new Scanner(System.in);
    System.out.print("\n请输入要修改学生的学号:");
    int xiu=sc.nextInt();
    System.out.print("\n是否要改名字? (是:y / 否:n) :");
    String xuanzhe=sc.next();
    if(xuanzhe.equals("y"))
    {
    System.out.print("\n请输入"+xiu+"号学生的新名字:");
    x[xiu-1].name=sc.next();
    }
    else
    {
    System.out.println("\n\t只改分数...");
    }
    for(int i=0;i<y;i++)
    {
    System.out.print("请输入"+x[xiu-1].name+"同学的第"+(i+1)+"门新成绩:");
    x[xiu-1].score[i]=sc.nextInt();
    }
    }

    public static void paixu(String []b,Student []x,int y,int z)
    {
    Scanner sc=new Scanner(System.in);
    int i=0;
    int j=0;
    System.out.println("*************************************************");
    for(i=0;i<y;i++)
    {
    System.out.print((i+1)+". 按"+b[i]+"排序:\t\t");
    j++;
    if(j%2==0)
    {
    System.out.println();
    }
    }
    System.out.println((i+1)+". 按总分排序:\t\t"+(i+2)+". 按平均分排序:");
    System.out.println("0. 返回上一层");
    System.out.print("\n〖请选择排序条件〗:");
    int xuanzhe=sc.nextInt();
    for(i=0;i<z;i++)
    {
    for(j=0;j<z-i-1;j++)
    {
    if(x[j].score[xuanzhe-1]<x[j+1].score[xuanzhe-1])
    {
    x[10].name=x[j].name;
    x[j].name=x[j+1].name;
    x[j+1].name=x[10].name;
    for(int k=0;k<y;k++)
    {

    x[10].score[k]=x[j].score[k];

    x[j].score[k]=x[j+1].score[k];

    x[j+1].score[k]=x[10].score[k];
    }
    }
    }
    }




    }
    }
       
    麻烦了....
      

  6.   

    首先在修改的时候
    for(int i=0;i <y;i++) 

    System.out.print("请输入"+x[xiu-1].name+"同学的第"+(i+1)+"门新成绩:"); 
    x[xiu-1].score[i]=sc.nextInt(); 
    } 这里好像应该是输入double的,而不是int
      

  7.   

    排序的地方就不用这么麻烦了.你直接改变x[i]就行了,而不用里边的name也得换.for(i=0;i <z;i++) 

    for(j=i+1;j <z;j++) 

    if(x[i].score[xuanzhe-1] < x[j].score[xuanzhe-1]) //降序排
    {
           Student o = x[i];
                x[i] = x[j];
                x[j] = o;
      } 
     }