2015-04-03 95 views
0

当我尝试测试运行时,我不断得到第51行的空例外: songs [i] .title = Recording.setTitle(); 该方法似乎被称为罚款,那么为什么不是歌曲[我]。标题被设置? 我很新的导航类,所以请原谅,如果这是一个愚蠢的问题。这个错误的含义是什么:java.lang.NullPointerException

import java.util.Scanner; 

class Recording { 
    String title; 
    String artist; 
    String time; 

    String getTitle(){ 
     return title; 
    } 


    String getArtist(){ 
     return artist; 
    } 

    String getTime(){ 
     return time; 
    } 

    static String setTitle(){ 
     Scanner title_input = new Scanner(System.in); 
     System.out.println("What is the title of your recording?"); 
     String title_received = title_input.nextLine(); 
     return title_received; 
    } 

    String setArtist(){ 
     Scanner artist_input = new Scanner(System.in); 
     System.out.println("Who is the artist of your recording?"); 
     String artist_received = artist_input.nextLine(); 
     return artist_received; 
    } 

    String setTime(){ 
     Scanner time_input = new Scanner(System.in); 
     System.out.println("How long is your recording of your recording?"); 
     String time_received = time_input.nextLine(); 
     return time_received; 
    } 
} 
public class RecordingSort { 

    public static void main(String[] args) { 


      Recording[] songs = new Recording[5]; 

      for(int i = 0; i<5; ++i){ 
       songs[i].title=Recording.setTitle(); 
       System.out.println(songs[i].title); 
      } 

    } 

} 
+0

的关键是,一个*参考*阵列最初充满空值。可以认为它与创建一个蛋盒相似。直到您首先用鸡蛋填充纸箱后才能使用任何鸡蛋。因此,例如对于您的歌曲数组,首先需要将录制对象分配给数组中的每个项目,然后才能调用它们的方法。 – 2015-04-03 21:52:40

回答

1

您收到此错误,因为虽然你宣布和分配5个Recording对象的数组,你从来没有真正实例化阵列中的任何物体。

尝试此处添加一行:

for(int i = 0; i<5; ++i){ 
       songs[i] = new Recording(); //invoke a valid object constructor here         
       songs[i].title=Recording.setTitle(); 
相关问题