我的Java代码无法正常工作(线程“ main”中的异常java.lang.NullPointerException)

时间:2019-10-10 11:33:36

标签: java nullpointerexception

{

public static class Member
{
    private String name;
    private int age;

    public Member(String x,int y){
    name=x;
    age=y;
    }
    public int compareTo(Member a){
    if(a.getAge()>age)
        return 1;
       else if (age<a.getAge())
        return -1;
        else return 0;
    }

    public String getName(){return name;}

    public int getAge(){return age;}
}

public static void sortMember(Member [] a,int l){
for (int j = 0; j < l-1; j++) {
if (a[j].compareTo(a[(j+1)]) > 0) {
      Member temp = a[j]; 
     a[j] = a[j+1]; 
     a[j+1] = temp; 
}}
}
public static void main(String[] args)
{

    String name[]=new String[7];
    int age[]=new int[7];
    for(int x=0,y=0;x<14;x+=2,y++){
    name[y]=args[x];
    age[y]=Integer.parseInt(args[x+1]);}

    Member [] s= new Member[7];

    for(int i =0;i< (s.length -1);i++){
        s[i]=new Member(name[i],age[i]);
                    }

        for(int count =0;count< (s.length -1);count++){
             System.out.println(s[count].getName()+" "+s[count].getAge());
             }

         sortMember(s,s.length);
    for(int count =0;count< (s.length -1);count++){
    System.out.println(s[count].getName()+" "+s[count].getAge());
    }
    }}


命令行参数:爱丽丝15鲍勃55猫56大卫63埃兰37范妮75海伦55

输出:

Alice 15
Bob 55
Cat 56
David 63
Elan 37
Fanny 75
Exception in thread "main" java.lang.NullPointerException
    at TestAsg1Q1$Member.compareTo(TestAsg1Q1.java:16)
    at TestAsg1Q1.sortMember(TestAsg1Q1.java:30)
    at TestAsg1Q1.main(TestAsg1Q1.java:55)

1 个答案:

答案 0 :(得分:0)

您的sort方法不需要传递数组的长度,因为您传递的是数组,您可以直接从该方法访问该属性。 但是,当j的if (a[j].compareTo(a[(j+1)])的值为6时,您尝试访问不存在的索引7处的数组a

如果使用的是IDE(Netbeans,Eclipse,Intellij),则可以在sort方法的for循环的第一行中设置一些断点,并检查每次迭代的变量值,直到错误弹出。 / p>