以前にforループを使用して文字列を逆から表示させる方法について見た。
記事については以下参照。
【Javaプログラミング】forループを使用して文字列を逆から表示-プロショvol.96
以上の記事では、プログラムの中に文字列を記入する必要があった。
今回はユーザーが好きな文字列を入力できるように、「Scanner」を使用して文字列を最後の文字から出力できるようにするプログラムを作ることに。
プログラムを作成するにあたり必要な知識
今回のプログラムを作成する際に、以下のメソッドを使用する。
length()・・・文字列の長さ(文字数)を取得するメソッド。
lengthについては以下参照。
【Javaプログラミング】文字列の長さを調べるlength()の使い方-プロショvol.94
charAt()・・・文字列から1文字を取得するメソッド。
charAt()については以下参照。
【Javaプログラミング】1文字を抜き出すcharAt()の使い方-プロショvol.95
next()・・・スキャナーと一緒に使用するメソッド。ユーザーが入力するものは「文字列」ということを指定するもの。
next()については以下参照。
【Javaプログラミング】next()とは何か?使用方法についても-プロショvol.97
合わせてnextLine()についても確認してみるといいかも。
文字列を逆から表示させるプログラム
上記に紹介したメソッドを使用して、簡単なプログラムを作成してみた。
import java.util.Scanner;
public class moji {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(“文字列を入力”);
String a =sc.next();
int b = a.length();
for(int n=b;0<n;n–) {
System.out.print(a.charAt(n-1));
}
}
}
hello
olleh
実行すると最初に「文字列を入力」と出てくる。
ユーザーが文字を入力すると(今回はhello)、入力した文字を逆から表示させる。
プログラムの処理の流れ
プログラムの処理の流れは以下のようになる。
- ユーザーが文字を入力できるようにスキャナー(Scanner)をセット。
ユーザーが入力した文字は変数「sc」に格納する。 - 画面に「文字列を入力」と表示されるようにする。
- ユーザーが入力した文字は文字列ということを「next()」を使用して指定する。
- ユーザーが入力した文字列の文字数を取得するためにlength()を使用する。
- forループを使用して逆から文字を取得させるためのコードを記入。
初期値:int n=b、ループが続く条件:0<n、ループの最後に行う処理:n– - a.charAt(n-1)は「変数aに格納された文字列のうち、(n-1)番に格納された1文字を表示させる」ということ。
- 全て処理が終わったとき、「olleh(helloの逆)」が表示された。
forループの初期値は文字数(今回は5文字のため「5」)であり、ループが行われるたびにn–(nが1ずつ減っていく)処理が行われる。
文字の番号は0から順番につけられる。
helloは5文字だが、番号は0から付けられるためhは「0番」、oは「4番」ということ。
文字数から「-1」した番号が一番最後の文字の番号になるということ。
他にも文字列を逆から表示させる方法はたくさんある。
ちなみに
System.out.printを今回は使用したが、printlnを使用すると1文字ずつ縦に表示される。
詳細については以下参照。
printlnとprintの使い方と違い Javaプログラミング初心者の記録vol.32
最後に
今回はなるべくシンプルになるようにコードを作成してみた。
これ以外にもwhileループを使用したりと色々方法はある。
スキャナーを使用しない場合のコードと比較してみると、何が必要で何が必要でないかが見えてくる。
スキャナーを使用しない場合の文字列を逆から表示させる方法については以下参照。
【Javaプログラミング】forループを使用して文字列を逆から表示-プロショvol.96
コメント