

現在２次元配列を勉強しており、問題の中で「doubleの配列を作成し、要素[x][y]の値をx*yにしましょう(初期化子を使わず)。」というものがありました。  
そこで一つのfor文にまとめて表示はできたのですが、次に別々のfor文に代入と表示をしましょうというものがありました。  
そこが考えていたのですがどうやってもうまく表示ができません。

以下コードから表示と代入を別のfor文に書き換えるにはどうすればよろしいでしょうか。

[code]

    double [][] s = new double[7][6];
        for (int x = 1; x < s.length; x++) {
            for (int y = 1; y < s[x].length; y++) {
                s[x][y] = x * y;
                System.out.println(s[x][y]);
    
            }
        }
    
[/code]

教えていただければ幸いです。  
宜しくお願い致します。


CC BY-SA 3.0
2017-03-20T10:25:11.200
33423
2022-05-10T06:31:10.890
13251
question
java
2次元配列で値の代入と表示を別のfor文で書く方法を教えていただきたいです


単純に別のfor文に分けたいだけならば、下記のようにすれば良い気がしました。

[code]

    for (int x = 1; x < s.length; x++) {
        for (int y = 1; y < s[x].length; y++) {
            s[x][y] = x * y;
        }
    }
    for (int x = 1; x < s.length; x++) {
         for (int y = 1; y < s[x].length; y++) {
             System.out.println(s[x][y]);
         }
    }
    
[/code]

下記のようにするともうすこしデータが見やすくなるかもしれません。

[code]

    // ファイルの先頭でjava.utils.Arraysをimport
    import java.util.Arrays;
    
    for (int x = 1; x < s.length; x++) {
        for (int y = 1; y < s[x].length; y++) {
            s[x][y] = x * y;
        }
    }
    for (double [] data: s) {
         System.out.println(Arrays.toString(data));
    }
    
[/code]


CC BY-SA 3.0
2017-03-20T11:29:12.460
33424
2017-03-20T11:29:12.460
2168
33423
answer


質問の意味がよく分からないですが、つまりこういうことでしょうか？  
代入(`s = x * y`)と表示(`System.out.println(s[x][y])`)を別々のfor文で。

[code]

    double[][] s = new double[7][6];
    
    for (int x = 0; x < s.length; x++) {
        for (int y = 0; y < s[x].length; y++) {
            s = x * y;
        }
    }
    
    for (int x = 0; x < s.length; x++) {
        for (int y = 0; y < s[x].length; y++) {
            System.out.println(s[x][y]);
        }
    }
    
[/code]


CC BY-SA 3.0
2017-03-20T11:32:00.137
33425
2017-03-20T11:32:00.137
7655
33423
answer


直接本題には関係しませんのでコメントで残そうと思いましたが、評価が足りなかったのでこちらに書かせていただきます。

おそらくですが配列の添え字が１から始まるのではなく、０から始まるかなと思われます。  
litmon様が書いているようにfor文で使用するカウンターの変数のスタートが０であると思われます。

もちろん言語によって添え字１から始まる仕様のものがあるかもしれません。  
その場合には、for文の終了条件部分が n < lengthではなく、n <= lengthになるかなと思います。

配列の中がどうなっているか、出力関数に最大値の添え字を配列に指定した場合、０を指定した場合１を指定した場合などご確認いただくことを推奨します。

おそらくですが、現在の状態ですと配列の0番地（1個目相当）が未初期化状態になっているかなと思います。


CC BY-SA 4.0
2022-05-10T06:31:10.890
88743
2022-05-10T06:31:10.890
51823
33423
answer