CodeGym /Java Blog /ランダム /Java で文字列を反転する
John Squirrels
レベル 41
San Francisco

Java で文字列を反転する

ランダム グループに公開済み

逆文字列とは何ですか?

「最後の文字から最初の文字まで文字列の読み取りを開始します。ビンゴ!それはあなたの逆文字列でした。」
これがどのように見えるかを示すデモンストレーションです。

Input String = "X Y Z";
Output String = "Z Y X"

Input String = "1 2 3";
Output String = "3 2 1";

Input String = "I love Java!";
Output String = "!avaJ evol I";

Javaで文字列を反転するには?

Java で文字列を反転するにはさまざまな方法があります。ただし、Java にはStringクラスのreverse()メソッドが提供されていません。単純なアプローチは、forループを使用することから始まります。従来の反復手順。後で、 StringBuilderStringBufferなどの他のクラスが提供するreverse()メソッドを使用してこれを構築できます。

方法 1 - 昔ながらの反復的な方法


public class StringReversal {

	public static String reverseInputString(String myString) {

		if (myString == null)
			return myString;

		String reverseString = "";

		for (int i = myString.length() - 1; i >= 0; i--) {		

			reverseString = reverseString + myString.charAt(i);
		}
		return reverseString;
	}

	public static void main(String[] args) {

		String myString1 = "X Y Z";
		System.out.println("reverse(" + myString1 + ") = " + reverseInputString(myString1));

		String myString2 = "1 2 3";
		System.out.println("reverse(" + myString2 + ") = " + reverseInputString(myString2));

		String myString3 = "I LOVE JAVA!";
		System.out.println("reverse(" + myString3 + ") = " + reverseInputString(myString3));

		String myString4 = "My favourite place to learn Java is CodeGym.";
		System.out.println("reverse(" + myString4 + ") = " + reverseInputString(myString4));

		String myString5 = "My name is Lubaina Khan.";
		System.out.println("reverse(" + myString5 + ") = " + reverseInputString(myString5));
		
		// Boundary Case to see what happens if a String is null
		String myString6 = null;
		System.out.println("reverse(" + myString6 + ") = " + reverseInputString(myString6));
		
		// Boundary Case to see what happens if a String is empty
		String myString7 = "";
		System.out.println("reverse(" + myString7 + ") = " + reverseInputString(myString7));
	}
}

出力

reverse(XYZ) = ZYX reverse(1 2 3) = 3 2 1 reverse(I LOVE JAVA!) = !AVAJ EVOL I reverse(Java を学ぶのに私のお気に入りの場所は CodeGym です。) = .myGedoC si avaJ nrael ot ecalp etiruovaf yM reverse(私の名前はルバイナ・カーンです。) = .nahK aniabL si eman yM reverse(null) = null reverse() =

説明


public static String reverseInputString(String myString) { ... }
reverseInputString メソッドは、myStringという入力文字列を受け取ります。

if (myString == null)
	return myString;
入力文字列、つまりmyStringが null かどうかを確認します。null が見つかった場合は、入力をそのまま返します。これ以上進む必要はありません。これは、エラーを回避するための境界ケース処理と呼ばれます。

String reverseString = "";
出力を保存する空の文字列を宣言します。

for (int i = myString.length() - 1; i >= 0; i--) {		
	reverseString = reverseString + myString.charAt(i);
}
通常のforループを使用します。入力Stringの最後のインデックスから反復子iを初期化します。入力文字列の最後のインデックスにアクセスし、それを出力文字列に保存します。0 番目のインデックスまたは入力文字列の先頭に到達するまで繰り返します。

return reverseString;
reverseString を 返し、要件に従ってそれを使用します。

方法 2 - String Builder クラスの使用

Java では、一度初期化されたStringの内容を変更することはできません。したがって、 Stringに使用できるreverse()メソッドはありません。ただし、Java のStringBuilderStringBuffer などの他のクラスには、可変または変更可能なコンテンツが含まれています。ループを使用せず、組み込みのStringBuilderクラスまたはStringBufferクラスを使用して文字列を反転するには、以下の例を見てみましょう。

public class StringBuilderReversal {

	public static void main(String[] args) {

		String input1 = "A B C";
		StringBuilder inputText1 = new StringBuilder(input1);
		System.out.println("reverse(" + inputText1 + ") = " + inputText1.reverse());

		String input2 = "0 1 2 2 3 3 3";
		StringBuilder inputText2 = new StringBuilder(input2);
		System.out.println("reverse(" + inputText2 + ") = " + inputText2.reverse());

		String input3 = "Monday";
		StringBuilder inputText3 = new StringBuilder(input3);
		System.out.println("reverse(" + inputText3 + ") = " + inputText3.reverse());

		String input4 = "I love CodeGym!";
		StringBuilder inputText4 = new StringBuilder(input4);
		System.out.println("reverse(" + inputText4 + ") = " + inputText4.reverse());

		 // ReverseString using the StringBuilder class
		StringBuilder inputText5 = new StringBuilder("Reverse this String using StringBuilder Class.");
		System.out.println("reverse(" + inputText5 + ") = " + inputText5.reverse());

		 // ReverseString using the StringBuffer class
		StringBuffer inputText6 = new StringBuffer("Reverse this String using StringBuffer Class.");
		System.out.println("reverse(" + inputText6 + ") = " + inputText6.reverse());
	}
}

出力

reverse(ABC) = CBA reverse(0 1 2 2 3 3 3) = 3 3 3 2 2 1 0 reverse(Monday) = yadnoM reverse(CodeGym が大好きです!) = !myGedoC evol I reverse(StringBuilder クラスを使用してこの文字列を反転します) .) = .ssalC redliuBgnirtS gnisu gnirtS sihtesreveR reverse(StringBuffer クラスを使用してこの文字列を反転します。) = .ssalC reffuBgnirtS gnisu gnirtS sihtesreveR

説明


String input1 = "A B C";
StringBuilder inputText1 = new StringBuilder(input1);
入力String を逆にするには、それをStringBuilderに変換する必要があります。そのためには、入力文字列をStringBuilderコンストラクターに渡します。

System.out.println("reverse(" + inputText1 + ") = " + inputText1.reverse());
String をStringBuilderに 変換した後、その逆を取得して出力を印刷できます。

 // ReverseString using the StringBuffer class
StringBuffer inputText6 = new StringBuffer("Reverse this String using StringBuffer Class.");
あるいは、StringBuilderまたはStringBufferにString を直接渡すこともできます。

結論

この投稿を終えるまでに、文字列の反転と、StringBuilder および StringBuffer の他のクラスを使用してそれを実現する方法を理解している必要があります。ご都合に合わせて任意の方法をお選びいただけます。行き詰まりを感じたときはいつでもお気軽にお越しください。それまで練習を続けて輝き続けてください。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION