2013-10-11 220 views
0

我得到这个错误NullPointerException异常和NoSuchElementException异常

java.lang.NullPointerException 
    at MidiPlayer.add_midi_files(MidiPlayer.java:59) 
    at MidiPlayer.main(MidiPlayer.java:51) 
Songs added! 
Starting to play 
Exception in thread "main" java.util.NoSuchElementException 
    at java.util.LinkedList.removeFirst(LinkedList.java:268) 
    at java.util.LinkedList.remove(LinkedList.java:683) 
    at MidiPlayer.play_next_song(MidiPlayer.java:31) 
    at MidiPlayer.start_playing(MidiPlayer.java:47) 
    at MidiPlayer.main(MidiPlayer.java:54) 

从这些方法

public static void main(String[] args){ 
    Queue<String> song_queue = new LinkedList<String>(); 
    MidiPlayer.add_midi_files(song_queue,new File("C:\\Users\\Kyle\\Desktop\\clieent\\Client\\cache\\Music\\runescape-7th realm.mid")); 
    System.out.println("Songs added!"); 
    MidiPlayer player = new MidiPlayer(song_queue); 
    player.start_playing(); 
}; 

public static void add_midi_files(Queue<String> queue, File top_dir){ 
    try { 
     for (File f: top_dir.listFiles()) 
      if (f.isDirectory()) 
       add_midi_files(queue, f); 
      else if (f.isFile() && f.getName().matches(".*midi?")) 
      { 
       System.out.println(f); 
       queue.add(f.getAbsolutePath()); 
      } 
      else 
      {} 
     //System.out.printf("%s doesn't match!", f.getName()); 
    } catch (NullPointerException e) { 
     e.printStackTrace(); 
    } 
} 

老实说,我看不出有什么问题,谁能帮我?

在正确的方向任何提示,将不胜感激

这里就是整个类,如果你需要它,http://pastebin.com/0hVw83zn

+1

添加文件时,您确定在第51行有正确的文件目录吗? – Zeveso

+0

http://stackoverflow.com/questions/18795000/program-throws-nullpointerexception-when-i-try-to-search-in-drives/18795076#18795076 – JNL

回答

4

File#listFiles()可以返回null。见javadoc

,则返回null如果发生I/O错误此抽象路径名不表示一个目录,或 。

catch声明燕子NullPointerException然后

player.start_playing(); 

尝试从Queue,并没有考虑。