2013-04-30 70 views
-1

我試圖寫一種方法,它將查看數據庫(4'插槽')找到下一個空的並存儲歌曲對象(artis,名稱,持續時間,文件大小)。每當我在程序中輸入數據,我目前的方法似乎將傳入的歌曲對象分配給所有數據庫'插槽'任何幫助將是非常感謝將歌曲分配到數據庫插槽中,簡單的音樂數據庫

如果任何人都可以看一看所有4個java類的在這裏 - >http://www.fast-files.com/getfile.aspx?file=62228

public void addSong() 
{ 
    Song S = new Song(); 
    do{ 
      if (a.fileSize==0) { 

        setData(a.artist, a.name, a.duration, a.fileSize); 
       break; 
       } else if (b.fileSize==0) { 

        setData(b.artist, b.name, b.duration, b.fileSize); 
       break; 
       } else if (c.fileSize==0) { 

        setData(c.artist, c.name, c.duration, c.fileSize); 
       break; 
       } else if (d.fileSize==0) { 

        setData(c.artist, c.name, c.duration, c.fileSize); 
       break; 
       } 

    }while(true); 
} 


public void setData(String artist, String name, double duration, int fileSize) 
{ 
    S.setArtist(artist); 
    S.setName(name); 
    S.setDuration(duration); 
    S.setFileSize(fileSize); 
} 

編輯 - 4數據庫中的Java類的所有http://www.fast-files.com/getfile.aspx?file=62228

+1

你試過去除了do-while循環嗎? – 2013-04-30 04:47:22

+0

我很難看到這段代碼如何完成你所說的。循環不是必需的,對我來說這似乎是一個「加載」方法。 – Breavyn 2013-04-30 04:59:04

+0

我應該說我添加了do-while循環來嘗試修復同樣的問題 - 雖然「break」語句可能會修復它 - 我沒有刪除do-while但仍然留下相同的問題 – Jack 2013-04-30 05:14:18

回答

0

首先,擺脫循環。

二,我認爲你的問題是隱藏S變量。在setData中,當您在addSong中聲明並實例化一個新的S變量時,您將其設置爲S屬性(此處爲全局字段)。

你可以做到以下幾點:

  1. 確保您使用正確的變量。
  2. 通過SsetData因此它將設置參數的字段而不是全局字段。
+0

好的,循環不見了,我仍然從一個歌曲對象導入得到完整的數據庫。這些課程已經在這裏進行了整理; http://pastebin.com/h8f2T7eg – Jack 2013-04-30 06:49:35

+0

請將所有**相關**代碼添加到問題本身。請添加什麼是錯的。 – BobTheBuilder 2013-04-30 06:57:19