CodeGym /Java blog /Véletlen /String megfordítása Java nyelven
John Squirrels
Szint
San Francisco

String megfordítása Java nyelven

Megjelent a csoportban

Mi az a fordított karakterlánc?

„Kezdje el egy karakterlánc olvasását az utolsó karakterétől kezdve egészen az első karakterig. Bingó! ez volt a fordított húrod."
Íme egy bemutató, hogyan fog kinézni.

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";

Hogyan lehet megfordítani egy karakterláncot Java-ban?

A karakterláncok megfordítására Java nyelven különböző módok állnak rendelkezésre. A Java azonban nem biztosít reverse() metódust a String osztályhoz. A naiv megközelítés a for ciklus használatával kezdődik . A hagyományos iteratív eljárás. Később felépíthetjük más osztályok, például a StringBuilder és a StringBuffer által kínált reverse() metódusokkal .

1. módszer – A régi iskola iteratív módszere


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));
	}
}

Kimenet

reverse(XYZ) = ZYX reverse(1 2 3) = 3 2 1 reverse(I LOVE JAVA!) = !AVAJ EVOL Reverse(A kedvenc Java tanulási helyem a CodeGym.) = .myGedoC si avaJ nrael ot ecalp etiruovaf yM reverse(A nevem Lubaina Khan.) = .nahK aniabuL si eman yM reverse(null) = null reverse() =

Magyarázat


public static String reverseInputString(String myString) { ... }
A reverseInputString metódus egy myString nevű bemeneti karakterláncot vesz fel .

if (myString == null)
	return myString;
Ellenőrizze, hogy a bemeneti String , azaz a myString null-e. Ha nullát talál, adja vissza a bemenetet úgy, ahogy van. Nem kell tovább lépnünk. Ezt határeset-kezelésnek nevezik a hibák elkerülése érdekében.

String reverseString = "";
Deklaráljon egy üres karakterláncot a kimenet tárolásához.

for (int i = myString.length() - 1; i >= 0; i--) {		
	reverseString = reverseString + myString.charAt(i);
}
Használjon normál for ciklust. Inicializálja az i iterátort a bemeneti String utolsó indexéből . Nyissa meg a bemeneti karakterlánc utolsó indexét, és tárolja a kimeneti karakterláncban. Addig ismételje, amíg el nem éri a 0. indexet vagy a bemeneti karakterlánc elejét.

return reverseString;
Adja vissza a reverseString-et , és használja az igényei szerint.

2. módszer – A String Builder osztály használata

Java nyelven az inicializált karakterlánc tartalma nem módosítható. Ezért nem áll rendelkezésre fordított() metódus a String s számára . De más osztályok, mint például a StringBuilder és a StringBuffer Java-ban, változtatható vagy módosítható tartalmat tartalmaznak. Egy karakterlánc visszafordításához hurkok nélkül, és a beépített StringBuilder vagy StringBuffer osztály használatával nézzünk meg egy példát az alábbiakban.

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());
	}
}

Kimenet

reverse(ABC) = CBA reverse(0 1 2 2 3 3 3) = 3 3 3 2 2 1 0 fordított(Hétfő) = yadnoM reverse(Imádom a CodeGym-et!) = !myGedoC evol I reverse(Fordítsa meg ezt a karakterláncot a StringBuilder osztály segítségével .) = .ssalC redliuBgnirtS gnisu gnirtS siht esreveR reverse(fordítsa meg ezt a karakterláncot a StringBuffer osztály használatával.) = .ssalC reffuBgnirtS gnisu gnirtS siht esreveR

Magyarázat


String input1 = "A B C";
StringBuilder inputText1 = new StringBuilder(input1);
A bemeneti karakterlánc megfordításához konvertálnia kell a StringBuilderbe . Ehhez adja át a bemeneti karakterláncot a StringBuilder konstruktornak.

System.out.println("reverse(" + inputText1 + ") = " + inputText1.reverse());
A String StringBuilder- re konvertálása után megkaphatja a fordítottját, és kinyomtathatja a kimenetet.

 // ReverseString using the StringBuffer class
StringBuffer inputText6 = new StringBuffer("Reverse this String using StringBuffer Class.");
Alternatív megoldásként átadhat egy karakterláncot közvetlenül a StringBuildernek vagy a StringBuffernek .

Következtetés

Ennek a bejegyzésnek a végére ismernie kell a Strings visszafordítását és annak elérését a StringBuilder és a StringBuffer más osztályaival. Bármelyik módszert kiválaszthatja saját kényelmének megfelelően. Nyugodtan ugorjon fel, amikor úgy érzi, elakad. Addig is gyakorolj és ragyogj tovább.
Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION