文字列の先頭から1文字ずつ切り出して出力してみましょう。ここでは「だるまさんがころんだ」を1文字ずつ切り出します。
考え方と必要なメソッド
文字列に含まれる文字を繰り返し出力するのでここでは繰り返しのためのfor文を使います。
文字列の長さを知る
for文は「何回繰り返すか」を知らなければ作れません。ここでは文字列に含まれる文字を一つ一つ出力するので文字列に含まれる文字の数、つまり文字長を取得する方法が必要です。
文字列から文字長を取得するにはlengthメソッドを使います。戻り値はint型で返されます。
String daruma_san = "だるまさんがころんだ"; int string_length = daruma_san.length(); System.out.println("文字長は" + string_length);
実行すると
文字長は10
と出力されます。
文字列から文字を切り出す
文字列から文字を切り出すにはcharAtメソッドを使います。戻り値はchar型です。
String daruma_san = "だるまさんがころんだ"; char first_char = daruma_san.charAt(0); System.out.println("0番目の文字は「" + first_char + "」");
実行すると
0番目の文字は「だ」
と出力されます。今回はcharAtの引数は0、つまり0番目でした。文字を順次だすにはこの値を0から9まで繰り返しで出力すればいい事になります。
プログラムを作成する
基本的な実装
以上の部品からコードを書き出します。
String daruma_san = "だるまさんがころんだ"; int string_length = daruma_san.length(); for(int i = 0;i < string_length;i++){ System.out.println(daruma_san.charAt(i)); }
for文の繰り返しの回数は文字列”だるまさんがころんだ”の文字長です。繰り返しで使う変数iの初期値は0でこれが毎回1ずつ足され10未満である間繰り返されます。
繰り返しの各回では文字列から変数iを先頭からの位置として文字を取得します。これを標準出力に出力します。結果は以下の通りです。
だ る ま さ ん が こ ろ ん だ
気持ちを込めた実装にする
これで最低限できましたがもう少し臨場感のある出力にしたいと思います。実際遊びとしてこの言葉を言うときは「だーるーまーさーんーがーこーろーんーだっ!」という感じに各文字を伸ばしていると思います。そして最後は短く切って強く言います。
最後だけ「っ!」をつけてそれ以外は「ー」をつけるように改良しましょう。最後の文字は文字長の1少ない数なのでiがstring_length – 1と等しいときと判定します。この判定でif文を作成して最後の文字の場合とそれ以外の場合で後ろにつける文字を変化させます。
String daruma_san = "だるまさんがころんだ"; int string_length = daruma_san.length(); for(int i = 0;i < string_length;i++){ if(i == string_length - 1){ System.out.println(daruma_san.charAt(i) + "っ!"); }else{ System.out.println(daruma_san.charAt(i) + "ー"); } }
以下が実行結果です。少し気持ちがこもりました。
だー るー まー さー んー がー こー ろー んー だっ!