2017-04-04 110 views
-3

我想写一些java代码,但我得到一个异常。 我的问题是,我得到一个空指针异常,当我尝试添加运动员 程序是接受运动员和计算平均得分这里 是我的代码arraylist不打印第一个元素

public class AthleteTest { 

     final int MAX_ATHELETE = 200; 
     private int count=0;  
     Athlete[] at = new Athlete[MAX_ATHELETE]; 
     Scanner sc = new Scanner(System.in); 

    public void addAthletes(){ 
      char add = 'Y'; 
      while(add == 'Y'){ 

       System.out.println("name:"); 
       String name = sc.nextLine(); 
       at[count].setName(name); 

       //Get athlete's Id number 
       System.out.println("id :"); 
       int id = sc.nextInt(); 
       at.setId(id); 

       //sc.nextLine(); 

       count++; 


       System.out.println("Would you like to add another athlete? Y/N"); 
       add = Character.toUpperCase(sc.next().charAt(0)); 
       sc.nextLine(); 
      } 
     } 
    } 


    my Athlete class is as follow 

    public class Athlete { 

     private String name; 
     private int id; 

     private double [] grades; 

     public Athlete(){ 
      this.name = null; 
      this.id= 0; 
     } 

     public Student(String name, int id){ 
      this.name = name; 
      this.id= id; 
     } 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 

     public int getId() { 
      return id; 
     } 

     public void setId(int id) { 
      this.id = id; 
     } 
    } 
+0

ArrayList在哪里? –

+3

'at [count] .setName(name)' - 是在[count]'初始化?如果不是,那就是为什么你会得到'NullPointerException'。你应该在[count] = new Athlete()'首先执行 – 2017-04-04 17:40:44

+0

是的,我做过了,但它仍然给我一个空指针异常 –

回答

0

你得到,因为你的例外在实例化它们之前,试图访问运动员对象。有了这个初始化:

Athlete[] at = new Athlete[MAX_ATHELETE]; 

你只是创建了一个地方举行运动员实例。

改变你在循环代码是这样的:

System.out.println("name:"); 
String name = sc.nextLine(); 
at[count] = new Athlete(); // Add this line 
at[count].setName(name); 

而且你应该罚款。

+0

好的谢谢。我已经添加了该行,但是我仍然得到相同的空指针异常 –

+0

'NullPointerException'总是告诉你类和错误发生的位置。检查这一行是什么,你会知道什么是错的(或者至少需要初始化什么变量) – 2017-04-04 18:43:51