列表70个专辑无效,仅显示3个专辑并重复

时间:2017-12-14 16:22:02

标签: java

我想列出70张专辑,每张专辑都有专辑信息(名称,图片,说明)。

在Java类中,我使用方法getAlbums qm1.getAlbums获取70张专辑。此操作的结果是这种格式(首先是名称,然后是专辑的ID):

[[‘Achtung Baby’, …, ‘Pop’], [100, .., 160]] 

(achthunb baby的id为100,Pop专辑的id为160)

这部分工作正常。

现在在Java类中使用了其他方法“qm.getAlbumInfo(name, id)”,我想为每个返回的相册返回上面的信息(名称,图像,描述)。

错误:但是它无法正常工作,它总是显示第一张专辑的信息三次。所以它没有显示所有70张专辑,只显示3张专辑和所有3张专辑都是相同的。

你知道错误在哪里吗?

Java类:

         QueryManager qm1 = new QueryManager();

        // qm1.getAlbums returns on this format
        // [[‘Achtung Baby’, …, ‘Pop’], [100, .., 160]] 
        ArrayList<ArrayList<String>> result1 = qm1.getAlbums();
        qm1.closeConnections();

        String name =  result1.get(0).toString();
        String id   =  result1.get(1).toString();

        QueryManager qm = new QueryManager();
        ArrayList<ArrayList<String>> result;
     // the error maybe is in this part:
       for (int i = 0; i<= result1.size(); i++)
            result = qm.getAlbumInfo(name[i], id[i]);
        qm.closeConnections();        

        ArrayList<String> albumInfo = result.get(0);

        System.out.println(albumInfo.size() + "albumInfo SIZE");  // shows 3
        System.out.println(result1.size() + "result1 SIZE"); // shows 2
        System.out.println(name.size() + "name SIZE"); // shows 70
        System.out.println(id.size() + "id SIZE"); // shows 70

1 个答案:

答案 0 :(得分:1)

您的代码中存在很多问题......

首先,循环:

ArrayList<ArrayList<String>> result;
// the error maybe is in this part:
for (int i = 0; i<= result1.size(); i++)
    result = qm.getAlbumInfo(name[i], id[i]);

结果只能获得最后qm.getAlbumInfo(name[i], id[i])

您可能希望将每个List<String>(如果这是getAlbumInfo的返回类型)添加到List。没有它,你就不会保留每一个结果。

 List<<List<String>> result = new ArrayList<List<String>>();
 for (int i = 0; i<= result1.size(); i++)
    result.add(qm.getAlbumInfo(name[i], id[i]));

如果我有点担心循环的情况,如果你从i = 0开始,你很可能需要检查i < result1.size,而不是i <= result1.size

但是,name[i]id[i]无法编译,因为它们是String

你获得这些String的方式也是错误的:

ArrayList<ArrayList<String>> result1 = qm1.getAlbums();
qm1.closeConnections();

String name =  result1.get(0).toString();
String id   =  result1.get(1).toString();

result1.get的归还为ArrayList<String>,因此我怀疑tostring是您的期望。

从那一切。我猜你想要的实际代码是:

List<List<String>> resultAlbum = qm1.getAlbums();

List<String> albumInfo;
String name, id;
List<<List<String>> resultInfo = new ArrayList<List<String>>();
for (int i = 0; i<= resultAlbum.size(); i++){
    //get on album row
    albumInfo = resultAlbum.get(i);

    name = albumInfo.get(0);
    id = albumInfo.get(1);

    //Get the info for this album and add into the list
    resultInfo .add(qm.getAlbumInfo(name, id));
}