2016-09-20 74 views
-4

這種方法有什麼問題?它應該只是將一首歌曲添加到一組歌曲中。歌曲不能重複,如果該數組已經有3首歌曲,則必須將第4首歌曲添加到數組的第3個索引中。如何將一個字符串添加到數組?

import java.util.*; 

public class Player { 
    private String[] songs; 
    private int[] order; 
    private int numSongs; 
    private int numSongsInShuffle; 

    public Player() { 
     songs = null; 
     order = null; 
     numSongs = 0; 
     numSongsInShuffle = 0; 
    } 

    public void addSong(String name) { 
     if ((songs==null) || (numSongs==songs.length)) { 
      //expand 
      String [] temp; 
      temp = new String[2*numSongs]; 
      for (int i=0;i<songs.length;i++) 
       temp[i] = songs[i]; 
      songs = temp; 
     } 
     songs[numSongs] = name; 
     numSongs++; 
    } 
+0

您尚未提供足夠的信息可以幫助我們。如果您提供您正在嘗試測試的課程,您的測試課程以及爲什麼您認爲它不起作用可能會有所幫助 – tddmonkey

+0

@tddmonkey在完成問題之前,我不小心保存了所做的更改。抱歉。 –

+0

你收到了什麼故障或錯誤?說「酒吧是紅色的」沒有給出有關實際失敗的任何信息。 –

回答

0

您的代碼在這裏

​​

投擲NullPointerException,因爲在第一個項目,songs爲空。即使你做了空檢查,你也會得到一個ArrayIndexOutOfBoundsException,因爲numSongs應該是0,所以temp應該是一個空數組。你需要做的是分開你的初始化邏輯,如下所示:

public void addSong(String name) { 
    if (songs == null) { 
     // initialize array 
     songs = new String[1]; 
    } else if (numSongs == songs.length) { 
     //expand 
     songs = Arrays.copyOf(songs, 2*numSongs); 
    } 
    songs[numSongs] = name; 
    numSongs++; 
} 
相關問題