请问一下 我定义一个类 里面有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) 求教高手指点下哪有问题?
现在我要把里面 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) 求教高手指点下哪有问题?
楼主【coxo2008】截止到2008-07-22 18:57:35的历史汇总数据(不包括此帖):
发帖的总数量:2 发帖的总分数:0 每贴平均分数:0
回帖的总数量:1 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:1 结贴的总分数:0
无满意结贴数:1 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:50.00 % 结分的百分比:---------------------
无满意结贴率:100.00% 无满意结分率:---------------------
楼主加油
超出边界了.
改成k < 9
x[j].name=x[j+1].name;
x[j+1].name=x[5].name;难道是这里 String 不能给? 不能和int 一样覆盖?
{
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];
}
}
}
}
}
}
麻烦了....
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
{
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;
}
}
}