我想列出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
答案 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));
}