2013-04-30 49 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