■ランダムダイアリー

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);
    }
}