40314
**■ランダムダイアリー**

0から4までのランダムな数字(重複してもOK)をそれぞれのメソッドへ引数として渡す。

> whenメソッドでは、 {"先月","先週","一昨日","昨日","今日"}  
>  whoメソッドでは、{"私は","彼女は","彼は","父は","母は"}  
>  whereメソッドでは、 {"家で","お店で","海で","山で","道で"}  
>  whatメソッドでは、{"歌った","ご飯を食べた","お茶を飲んだ","泣いた","笑った"}

の配列を用い、全ての要素をmainで表示して日記を完成させる。

> ex) whenメソッドで[2]、whoメソッドで[3]、whereメソッドで[1]、  
>  whatメソッドで[0]を受け取った場合の結果は、  
>  【一昨日 父は お店で 歌った】と表示される。

* * *

自分なりにコーディングしてみましたが、あと一歩（かどうかはわかりませんが）のところで躓いてしまいました。  
コメント文に記載してますが、//ここから～//ここまでの部分でエラーが出てしまいます。

> 「型 randamdiary のメソッド where(String) は引数 (int) に適用できません」

Stringをintに変換して引数に適用させようとしてもなかなか解消されません。  
そもそもの根本的なモノが間違っている可能性がありますが、ご教授いただければと思います。

```

    public class randamdiary {
    
        public static void main(String[] args) {
            int randam = (int) (Math.random() * 5);
    　　　　//ここから
            String w = when(randam);
            String x = who(randam);
            String y = where(randam);
            String z = what(randam);
    　　　　//ここまで
            System.out.println(w + x + w + z);
        }
    
        public static int when(String a) {
            String when1[] = { "先月", "先週", "一昨日", "昨日", "今日" };
            int w = 0;
            when1[w] = a;
            return Integer.parseInt(a);
        }
    
        public static int who(String b) {
            String who1[] = { "私は", "彼女は", "彼は", "父は", "母は" };
            int x = 0;
            who1[x] = b;
            return Integer.parseInt(b);
        }
    
        public static int where(String c) {
            String where1[] = { "家で", "お店で", "海で", "山で", "道で" };
            int y = 0;
            where1[y] = c;
            return Integer.parseInt(c);
        }
    
        public static int what(String d) {
            String what1[] = { "歌った", "ご飯を食べた", "お茶を飲んだ", "泣いた", "笑った" };
            int z = 0;
            what1[z] = d;
            return Integer.parseInt(d);
        }
    }
    
```
CC BY-SA 3.0
2017-12-15T18:02:23.280
40313
2017-12-15T21:20:43.977
26629
question
java array
ランダムダイアリー（複数のメソッド、乱数、配列）
ご自分で定義された仕様とコーディングとが一致していないようなので、もう一度確認してみてください。  
以下の記述だと「引数は文字列」「返り値は数値」になってしまっています。

```

    public static int when(String a) {
        ...
    }
    
```

実際には「引数は(ランダムな)数値」「返り値は文字列」のはずなので、少なくとも

```

    String when(int a) {
        ...
    }
    
```

ではないでしょうか(引数を数値で渡したなら、メソッド内で`parseInt`も不要ですよね)。

* * *

その他の気になる点は`random`と`randam`はタイプミスなのか意図してなのかと、各メソッドを呼び出す度に`random`で値を取得してやらないと、結局四通りの文章にしかならない気がします。  
(1つの値だけで4つのメソッドを呼ぶと、各配列の決まったインデックスでしか文章が構成されない)
CC BY-SA 3.0
2017-12-15T21:09:06.693
40314
2017-12-15T21:20:43.977
2017-12-15T21:20:43.977
3060
3060
40313
answer