今回は前回学習したcharAt()を使用したコードで文字列を逆から表示させるプログラムを作成する。
逆から呼んでも同じ文になる「回文」を使って、プログラムがきちんと組めているかチェックすることもできる。
回文とは「しんぶんし」みたいに逆から呼んでも同じ言葉や文のこと。
プログラムを作成する際に必要な知識
- 文字数を取得するlength()
length()については以下参照
【Javaプログラミング】文字列の長さを調べるlength()の使い方-プロショvol.94 - 1文字を取得するcharAt()
- forループ
forループについては以下参照。
forループ Javaプログラミング初心者の記録vol.19 - return
returnについては以下参照。
【Java】戻り値とは?voidを使うときと使わないときの違い by プログラミング初心者
基本的には上に挙げたものを使用する。
場合によってはスキャナーを使用して、ユーザーが好きな言葉を反対にすることもできる。
スキャナーについては以下参照。
スキャナー(Scanner)とは?取り込み方についても Vol.35-プロショ
文字列を逆から表示するコード
1つの例として以下のコードを作成してみた。
public class reverseString {
public static void main(String[] args) {
String a = “Hello!”;
String c=””;
for(int b=a.length();b>0;–b) {
c = c+a.charAt(b-1);
}
System.out.println(c);
}
}
以上を実行すると以下の結果が得られる。
プログラムの進行順
以下にプログラムを実行した際の順序を追っていく。
まずはforループが行われる前の段階。
- まず任意の文字を設定。今回は「Hello!」とした。
- 後に使用する変数「c」を用意。変数cは空っぽにしておきたいため、「”」の間には文字を入れない。
- forループを使用。
- forループの初期値は「int b=a.length()」。これは、変数aの文字数が初期値ということ。
- ループされる条件は「b>0」。条件に当てはまっていればforの{}内が処理される。
- ループの最後には「–b」が処理される。これは「b=b-1」の短縮形。
次にforループ内の処理
- 「a.length()」によって変数aの文字数を取得。「Hello!」は6文字のため、「int b=6」ということ。
- 「b=6」はループ条件の「b>0」に当てはまる。よってforの{}内が処理される。
- 左の変数cには、変数cとa.charAt(b-1)を合わせたものが代入される。
⇒最初に「String c=””;」と設定したのは、最初のループではcには何も入っていないから。
「a.charAt(b-1)」に「b=6」を入れると、「a.charAt(5)」になる。
よって5という番号に入った文字が出力される。
文字の番号は先頭から順番に振られていく。
その際の番号は「0」から始まるため、「a.charAt(5)」というのは6文字目を指す(0,1,2,3,4,5)。
- 5に入っている文字は「!」のため、cには「!」が入る。
- ループ処理の最後には「–b」が行われ、「b=5」となってforループ処理が繰り返される。
c = c+a.charAt(b-1);の部分では、「!+o」、「!o+l」、「!ol+l」・・・とループするたびに前の結果に新しく取得した1文字が足されていく。
よって最終的に「!olleH」が表示される。
最後に
今回はforループを使用して文字列を逆から表示する方法について扱った。
スキャナーを使用して表示させる方法もあるが、それについてはまた後日まとめることに。
コメント