0

メソッドを使って多次元配列を作成しようとしています。しかし、私はここで立ち往生しました。印刷方法が正しく機能していません。何も表示されず、エラーも表示されません。

public void bas() { // ========> print method
for (int a = 0; a < dizi.length; a++) {
    for (int b = 0; b < dizi[a].length; b++) {
        System.out.println(" dizi[" + n + "][" + m + "] = "
        + dizi[n][m]);
    }}}

修正しました。

public int[][] doldur() { // ========> fill method
for (int i = 0; i < dizi.length; i++) {
    for (int j = 0; j < dizi.length[i]; j++) { //problem in here: The type of the expression must be an array type but it resolved to int

    }
}
return dizi;

}

dizi.length [i] => dizi [i] .length


私のコードの残りの部分:

public class ikiBoyutluDizi {
int n, m;
int[][] dizi = new int[n][m];

public int[][] diziBoyutu(int a, int b) {
    return dizi;
}

public int[][] doldur() { // ========> fill method
    for (int i = 0; i < dizi.length; i++) {
        for (int j = 0; j < dizi.length[i]; j++) {

        }
    }
    return dizi;
}

public void bas() { // ========> print method
    for (int a = 0; a < dizi.length; a++) {

        for (int b = 0; b < dizi[a].length; b++) {

            System.out.println(" dizi[" + n + "][" + m + "] = "

            + dizi[n][m]);

        }
    }
}

public static void main(String[] args) {
    ikiBoyutluDizi dizi2x = new ikiBoyutluDizi();
    dizi2x.diziBoyutu(2, 3);
    dizi2x.doldur();
    dizi2x.bas();
}

}

もう一つ; 私の印刷方法を確認できますか?塗りつぶし方法を修正した後、正しく機能していると思いますか?

4

2 に答える 2

2

問題のある行では、dizi[i].lengthの代わりにを使用する必要がありdizi.length[i]ます。

理由はdiziint[][]であり、したがってdizi[i]型ですint[]-これは配列ですがdizi.lengthintであり、実際にintの要素にアクセスしようとしました-これは不可能です!

dizi[i] != nullまた、そうする前に確認することをお勧めします

public int[][] doldur() { // ========> fill method
for (int i = 0; i < dizi.length; i++) {
    for (int j = 0; dizi[i] != null && j < dizi[i].length; j++) { 
      //               ^                         ^
      //           not null                   dizi[i].length 
      //                                         instead of
      //                                      dizi.length[i]
      // Do domething

    }
}
于 2012-11-12T22:45:06.220 に答える
0
for (int j = 0; j < dizi[i].length; j++)

dizi [i]は、iインデックスで配列を取得します。長さ属性はその長さを取得します。

于 2012-11-12T22:45:37.320 に答える