0

我收到这个错误

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

4

1 回答 1

4

File#listFiles()可以返回null。请参阅javadoc

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

你的catch陈述吞下了NullPointerException然后

player.start_playing();

试图从中获取Queue并失败。

于 2013-10-11T19:01:28.983 回答