下記ソースを実行した際、結果は

AA
null
BB
bb 

と表示されますが、これを下記のように表示させるには、どこを直せばよいでしょうか。
BB
bb
CC
cc

やりたいことは
*配列selectAを配列insertAにコピーしたい。
*ただしselectA[p][1]の値が0の場合はコピーしない。
(p=0だった場合、[0][0]も[0][1]もコピーしない。)


public static void main(String args[]) {


String[][] selectA = {{"AA","0",},
{"BB","bb",},
{"CC","cc",}};

String[][] insertA = new String[selectA.length][];

for(int p = 0; p < selectA.length; p++){
//forループ内でinsertAの下位配列の生成を行う。
insertA[p] = new String[selectA[p].length];

//forループ内でselectAからinsertAへデータのコピーを行う。
for(int q = 0; q < selectA[p].length; q++ ) {

if(selectA[p][q].equals("0")){
break;

}
insertA[p][q] = selectA[p][q];

}

}

System.out.println(insertA[0][0]);
System.out.println(insertA[0][1]);
System.out.println(insertA[1][0]);
System.out.println(insertA[1][1]);

}

回答の条件
  • 1人2回まで
  • 登録:2010/01/11 02:24:11
  • 終了:2010/01/18 02:25:03

ベストアンサー

id:t-wata No.1

t-wata回答回数82ベストアンサー獲得回数132010/01/11 03:07:52

ポイント60pt

これでどうですか

public static void main(String args[]) {
    String[][] selectA = {{"AA","0",},
        {"BB","bb",},
        {"CC","cc",}};

    String[][] insertA = new String[selectA.length][];

    for(int p = 0; p < selectA.length; p++){
        //条件より、selectA[p][1]の値が0ならコピーせずスキップする
        if (selectA[p][1].equals("0")){
            continue;
        }

        //forループ内でinsertAの下位配列の生成を行う。
        insertA[p] = new String[selectA[p].length];

        //forループ内でselectAからinsertAへデータのコピーを行う。
        for(int q = 0; q < selectA[p].length; q++ ) {
            insertA[p][q] = selectA[p][q];
        }

    }

    System.out.println(insertA[0][0]);
    System.out.println(insertA[0][1]);
    System.out.println(insertA[1][0]);
    System.out.println(insertA[1][1]);

} 
  • id:dorasuke
    すっかりお礼を書くのが遅くなってしまいました。
    頂いた案でうまくいきました。

    ありがとうござました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません