2017-12-14 3 views
-6

アルバム情報(名前、画像、説明)を持つ70のアルバムをリストしたいと思います。リスト70のアルバムが機能しない、3つのアルバムしか表示されずに繰り返される

getAlbums qm1.getAlbumsという方法で70個のアルバムを取得しています。

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

(achthunb赤ちゃんは、ID 100を有しており、ポップアルバムID 160を有する)

これ:この操作の結果は、このフォーマット(最初名アルバムのIDS)であります一部は正常に動作しています。

Javaクラスでは、他のメソッド "qm.getAlbumInfo(name, id)"が返されます。ここで返される各アルバムに対して、情報(名前、画像、説明)が返されます。

エラー:しかし、それは正常に動作していないが、それは常に最初のアルバムの情報を3回3回表示する。 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

ループ内の 'item'変数からクエリしてはいけませんか? –

+0

このコードは、 'albumInfo'をjspによって使用される' result'と置きます。あれは正しいですか? この行をデバッグして中断してください: 'request.setAttribute(" result "、albumInfo);' 'albumInfo'の内容を確認してください。何が起こっているかを見るためにいくつかの行をバックトラックしてください。 –

+0

ありがとうございます。albumInfoは情報(名前、画像リンク、説明)を印刷しますが、fristアルバムのみを印刷します。 – OzzyW

答えて

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を得る方法があまりにも間違っている:result1.get

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

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

リターンは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)); 
} 
関連する問題