74369


Javaの配列のプログラムについて質問です。

以下のプログラムで、hairetsu()メソッドと、mainメソッドの2つを用意しました。  
配列自体を、hairetsuメソッドで作成し、mainメソッドで、引数を指定して、hairetsuメソッドを呼び出しています。

今回ですと、mainメソッドでfor文を使って、全ての配列の要素に、「あ」を代入したいのですが、以下のコンパイルエラーが出てしまい、実行できません。今回のように、配列のメソッドを作り、他のメソッドで呼び出して、値を代入するには、どうすればいいでしょうか？

**エラー内容:**

[code]

    ample_hairetsu1.java:14: エラー: 予期しない型
                    hairetsu(i,m)="あ";
                            ^
      期待値: 変数
      検出値:    値
    エラー1個
    
[/code]

**ソースコード:**

[code]

    public class Sample_hairetsu1{
        public static String[][] hairetsu(int i, int m) {
            String[][] hairetsu = new String[9][9];
            System.out.print(hairetsu[i][m]);
            return hairetsu;
        }
    
        public static void main(String[] args) {
            for (int i = 0; i < 9; i++){
                for (int m = 0; m < 9; m++){
                    hairetsu(i, m) = "あ";
                }
            }
        }
    }
    
[/code]

**実行環境:**  
openjdk version "15.0.1" 2020-10-20  
OpenJDK Runtime Environment AdoptOpenJDK (build 15.0.1+9)  
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 15.0.1+9, mixed mode, sharing)


CC BY-SA 4.0
2021-03-02T09:20:11.973
74363
2021-03-02T14:58:40.287
2021-03-02T14:50:07.367
7290
39688
question
java
メソッドを用いた配列の呼び出し方、配列の要素への代入の仕方を教えてください


> mainメソッドでfor文を使って、全ての配列の要素に、「あ」を代入したい

ということからすると、

[code]

    public static void main(String[] args) {
        String[][] hairetsu = new String[9][9];
    
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                hairetsu[i][j] = "あ";
            }
        }
    
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                System.out.println(String.format("[%d][%d]: %s", i, j, hairetsu[i][j]));
            }
        }
    }
    
[/code]

こういう感じのことがやりたかったのかなと思いますが、`hairetsu[i][j]` と `hairetsu(i, j)`
では、前者は変数なので左辺で代入可能ですが、後者はメソッドなので、左辺値としてそれに対する代入はできません。

> 配列のメソッドを作り、他のメソッドで呼び出して、値を代入する

これをメソッド化したいのであれば、代入部分のループをメソッドとして独立させると

[code]

    public static String[][] fillAll(String filler, int size1, int size2) {
        String[][] hairetsu = new String[size1][size2];
    
        for (int i = 0; i < size1; i++) {
            for (int j = 0; j < size2; j++) {
                hairetsu[i][j] = filler;
            }
        }
        
        return hairetsu;
    }
    
    public static void main(String[] args) {
        String[][] hairetsu = fillAll("あ", 9, 9);
    
        for (int i = 0; i < 9; i++) {
            for (int j = 0; j < 9; j++) {
                System.out.println(String.format("[%d][%d]: %s", i, j, hairetsu[i][j]));
            }
        }
    }
    
[/code]

一例としてこんな感じです。


CC BY-SA 4.0
2021-03-02T14:46:01.240
74369
2021-03-02T14:58:40.287
2021-03-02T14:58:40.287
7290
7290
74363
answer