- ベストアンサー
三つの文字を順に並べるプログラム
- 三つの文字を入力して、順番に並べて表示させるプログラムが作りたいです。
- 既に二つの文字列を連結させることはできていますが、三つ目の文字列を追加する方法がわかりません。
- str1とstr2に123と45を入力すると、14253という結果が得られていますが、str3が6789ならば、146257389という結果を得たいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> for文で二重ループにしてやるのがいいのでしょうか? forでも何でも、お好きな書き方でどうぞ。 再帰を使ってこんなこともできます。 public static void main(String[] args) { System.out.println(mix("123","45","6789")); } static StringBuffer mix(String str1, String str2, String str3) { return mix_n(str1, str2, str3, 0); } static StringBuffer mix_n(String str1, String str2, String str3, int n) { StringBuffer sb = new StringBuffer(); if (n < str1.length()) sb.append(str1.charAt(n)); if (n < str2.length()) sb.append(str2.charAt(n)); if (n < str3.length()) sb.append(str3.charAt(n)); return (sb.length() > 0) ? sb.append(mix_n(str1, str2, str3, n+1)) : sb; }
その他の回答 (1)
- salsberry
- ベストアンサー率69% (495/711)
3つの文字列の長さの大小を比べる方法だと場合分けが大変になるので、発想を変えます。 (1) StringBuffer sbを空にする (2) nを0にする (3) m (=1,2,3)について、n < str_m.length()ならばstr_mのn文字目をsbの末尾に追加する (4) (3)でsbに1文字以上追加していたらnを1増やして(3)へ戻る (6) sbを出力して終了 これなら、文字列が4つ以上に増えてもやり方は同じです。
補足
(3)~(4)についてはfor文で二重ループにしてやるのがいいのでしょうか?
お礼
括弧内のダブルクォーテーションを抜いたら出来ました! 自分流にでも作れて、他の参考も教えてくださりありがとうございました。
補足
一度このプログラムで文字列をキーボードから入れるように試してみたのですが、 文字列1を入力してください 123 文字列2を入力してください 45 文字列3を入力してください 6789 sssttt123 こんな風になってしまいました。 これは何が原因なのでしょうか? main内を以下のようにいじりました public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("文字列1を入力してください"); String st1=br.readLine(); System.out.println("文字列2を入力してください"); String st2=br.readLine(); System.out.println("文字列3を入力してください"); String st3=br.readLine(); System.out.println(mix("st1","st2","st3")); }