class student
{
 String firstname;//名
 String lastname;//姓
 long ID;//账号
student(String fn,String ln,long id)
{
firstname=fn;lastname=ln;ID=id;
}
void display()
{
System.out.println("姓名是:"+firstname+lastname);
System.out.println("学号是:"+ID);
}
String getlast()
{
return lastname;
}
String getfirst()
{
return firstname;
}
}class stuarray
{
student[] s;
int nstu;
stuarray(int max)
{
nstu=0;
s=new student[max];
}
void insert(String fn,String ln,long id)
{
s[nstu++]=new student(fn,ln,id);
}
void InsertSort_by_firstname()//按照名进行排序
{
int in,out;
student tmp; //用于存放临时对象
for(out=1;out<nstu;out++)
{
tmp=s[out];
in=out;
while(in>0 && s[in-1].getfirst().compareTo(tmp.getfirst())>0)
{
s[in]=s[in-1];
--in;
}
s[in]=tmp;
}
}
void print()
{
int j;
for(j=0;j<nstu;j++)
s[j].display();
System.out.println();
}
student[] find(String last)// type of student 一次查询所有字段
    { 
int i = 0;  student[] stu=new student[nstu]; 
int index=0;  for (; i < nstu; i++) 
if (s[i].getlast().equals(last)) 

stu[index++]=s[i];  

if (index == 0) 

return null; 

else 
return stu; 
   }
public boolean deleteall(String searchname)//删除所有关键字相同的项???
{
student[] stu=new student[nstu];
int index=0;
for(int i=0;i<nstu;i++)
if(s[i].getlast().equals(searchname))

stu[index].firstname=stu[index].lastname=null;
stu[index].ID=0;
    index++;
return true;

}
}class TestData
{
public static void main(String[] args)
{
int maxsize=100;
stuarray stu=new stuarray(maxsize);
stu.insert("Mhicael","Jordan",101);
stu.insert("Lary","Jordan",102);
stu.insert("Kevien","Jordan",103);
stu.insert("Qw","Jordan",104);
student[] found=stu.find("Jordan");
/*for(int i=0;i<found.length;i++) 

if(found[i]!=null) 

System.out.print(i+1+":"); 
found[i].display(); 

} */
}
}
帮忙看看,为什么deleteall()删除时出现错误呢?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【fwloveyou】截止到2008-07-25 09:15:43的历史汇总数据(不包括此帖):
    发帖的总数量:8                        发帖的总分数:20                       每贴平均分数:2                        
    回帖的总数量:2                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:8                        结贴的总分数:20                       
    无满意结贴数:7                        无满意结贴分:160                      
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:87.50 %               无满意结分率:800.00%                  
    敬礼!
      

  2.   

    Exception in thread "main" java.lang.NullPointerException
            at stuarray.deleteall(student.java:153)
            at TestData.main(student.java:180)
    怎么办呢?
      

  3.   

    stu[index].firstname=stu[index].lastname=null; 
    修改为
    stu[index].firstname=null;
    stu[index].lastname=null; 
      

  4.   

    4楼,不好是啊,提示:
    E:\java\rubbish>javac student.java
    student.java:182: 未报告的异常 java.lang.Exception;必须对其进行捕捉或声明以便抛

                            boolean bl=stu.deleteall("Jordan");
                                                    ^
    1 错误
      

  5.   

    呃,系统不是说叫你捕捉异常了吗?
    try{
      boolean bl=stu.deleteall("Jordan"); 
    }catch(Exception e){
      e....(打印出异常的内容)
    }
      

  6.   

    是啊,写了try...catch()如下:
    public boolean deleteall(String searchname)throws NullPointerException//删除所有关键字相同的项???
    {
    student[] stu=new student[nstu];
    int index=0;

    try
    {
    for(int i=0;i<nstu;i++)
    if(s[i].getlast().equals(searchname))

    stu[index].firstname=null;
    stu[index].lastname=null;
    stu[index].ID=0;
        ++index;
    }
    catch (NullPointerException ne)
    {
    System.out.println();
    ne.printStackTrace();
    }
    return true;
    }
    }
    在主函数里这样写的:
    try
    {
    boolean bl=stu.deleteall("Jordan");
    if(bl)
    for(int i=0;i<found.length;i++) 

    if(found[i]!=null) 

    System.out.print(i+1+":"); 
    found[i].display(); 

    }
    }
    catch (NullPointerException ne)
    {
    System.out.println(ne.toString());
    }
    可是运行时提示:
    E:\java\rubbish>java TestDatajava.lang.NullPointerException
            at stuarray.deleteall(student.java:156)
            at TestData.main(student.java:191)
    1:姓名是:MhicaelJordan
    学号是:101
    2:姓名是:LaryJordan
    学号是:102
    3:姓名是:KevienJordan
    学号是:103
    4:姓名是:QwJordan
    学号是:104
    deleteall()函数该怎么修改呢?
      

  7.   

    仔细检查一下各个对象,提示有对象为null,并且你还调用了它(null对象)的方法。