Rekursion – Einen String rückwärts ausgeben

Hilfe! Das böse Wort! Rekursion :-)

So wild ist das gar nicht, denn die Rekursion lässt sich optimal bei Problemen einsetzen, die eine gewisse Laufzeit haben, d.h. so ziemlich alles, was sich mit einer FOR-Schleife lösen lässt, kann ich auch rekursiv lösen.

Rekursiv heißt eigentlich nichts anderes, als das sich eine Methode bis zu einer gewissen Abbruchbedingung immer wieder selbst aufruft, bis eine Abbruchbedingung erreicht wird.

Als Beispiel habe ich einen String, der rückwärts ausgegeben werden soll.

	public static void rkw(String s)
	{
		if(s.length() > 0)
		{
			System.out.print(s.charAt(s.length()-1));
			rkw(s.substring(0, s.length()-1));
		}

Die Methode rkw erwartet als Übergabeparameter einen String. Wird dieser übergeben, überprüft rkw zuerst, ob die Länge größer 0 ist, wenn ja, dann wird die letzte Stelle des Strings mit System.out.print() ausgegeben.
Anschließend rufen wir rkw erneut auf, diesmal aber mit dem veränderten String s, dieser hat nämlich nun nur noch eine Länge von 0 bis Ende-1, d.h. es wird am Ende einfach das letzte Zeichen “abgeschnitten”. Das machen wir solange, bis der String komplett umgekehrt wurde, dann ist die Abbruchbedingung erreicht und wir verlassen die Methode wieder und das kleine Programm wird beendet.

Hier folgt der gesamte Quelltext:


public class rückwärts {

	public static void rkw(String s)
	{
		if(s.length() > 0)
		{
			System.out.print(s.charAt(s.length()-1));
			rkw(s.substring(0, s.length()-1));
		}

	}
	public static void main(String[] args) {

		String s = "Das ist ein String!";

		System.out.println(s);
		rkw(s);

	}

}

Ausgabe:

Das ist ein String!
!gnirtS nie tsi saD

Beispiele für Methoden der Klasse String

Hier nur ein wirklich sehr leichtes Beispiel für die Methoden, die uns die Klasse String zur Verfügung stellt.

Bei Gelegenheit werde ich dazu noch ein ausführlicheres Beispiel präsentieren.

import java.io.*;
public class Zeichenketten {

	static BufferedReader br = new BufferedReader(
			new InputStreamReader(System.in));

	public static void main(String[] args)
	throws IOException
	{
		String vorname, name;

		System.out.println("Bitte geben Sie Ihren Vornamen ein: ");
		vorname = br.readLine();
		System.out.println("Bitte geben Sie Ihren Nachnamen ein: ");
		name 	= br.readLine();

		System.out.println("--------------------------------------------------------------");
		System.out.println("Einige Beispiele, was man mit Zeichenketten/Strings machen kann:");
		System.out.println("--------------------------------------------------------------");

		System.out.println("vollständige Ausgabe: " + vorname + " " + name);
		System.out.println("V. Name: " + vorname.charAt(0) +". " + name);
		System.out.println("Vorname N.: " + vorname +". " + name.charAt(0));
		System.out.println("V. N.: " + vorname.charAt(0) +". " + name.charAt(0) + ".");
		System.out.println("erster Buchstabe Vorname fehlt:" + vorname.substring(1));
		System.out.println("erster Buchstabe Nachname fehlt:" + name.substring(1));

	}

}

Viel Spaß beim Modifizieren und Ausprobieren!

Hallo Welt Programm – Version 2

Um einmal zu zeigen, die der Datentyp String verwendet werden kann, habe ich das Hallo Welt Programm, du erinnerst dich, einmal verändert.

public class HalloWelt2
{
  String zeichenkette = "Hallo Welt - Version 2";
  public static void main(String[] args)
  {
    System.out.println(zeichenkette);
  }
}

Die kleine Änderung im Quellcode ist dir sicher schon aufgefallen. Es wurde direkt nach der öffnenden Klammer { der Klasse, wurde eine Variable “zeichenkette” vom Datentyp String deklariert und mit dem Wert “Hallo Welt – Version 2″ initialisiert.
Die Zeichenkette “Hallo Welt” in dem ursprünglichen Programm hatten wir ja direkt im System.out.println – Statement eingetragen und somit ausgegeben.
In der veränderten Version bekommt System.out.println in den Klammern die Variable “zeichenkette” übergeben und die Ausgabe wird so erzeugt.

Zusammenfassend können wir also sagen,
- System.out.println() kann Ausgaben auf der Konsole erzeugen
- im System.out.println() – Statement kann man entweder den Ausgabetext oder eine Variable übergeben, um das Ganze auf der Konsole auszugeben.

Datentypen in JAVA

In der Sprache Java gibt es eine Menge Datentypen, die wir während unserer Karriere als Programmierer immer wieder verwenden werden.

 

Datentyp Wertebereich Beispiel
1 Boolean true, false boolean schalter = true;
2 Byte -128 – +127 byte zahl;
3 Short -32768 – + 32767 short wert1;
4 Int -2147483648 – +2147483647 int a;
5 Long -9223372036854775808 – +9223372036854775807 long grosseZahl;
6 Char 0 – 65535 char zeichen;
7 String Zeichenketten variabler Länge String zeichenkette;

Verwendet man Char, sind einzelne Buchstaben in die Variable einlesbar, 0 – 65535 bedeutet, das die Zeichen 0 – 65535 aus dem ASCII-Code verwendet werden können.