Buchstabenfolge

Wyatt

Erfahrenes Mitglied
Aloha!

ich versuche mich seit einigen Tagen an einigen Übungsaufgaben aus dem Informatikstudium der Uni Darmstadt ... bin selbst kein Student, sondern Azubi :)

Bei dieser Aufgabe jedoch fehlt mir der komplette Ansatz...
Zahlenfolge spiegeln

Schreiben Sie ein rekursives Programm ohne Verwendung von Arrays und Strings, das eine beliebige Zeichenfolge (mit unbestimmter Anzahl von Zeichen) als Eingabe über die Tastatur entgegennimmt und diese in gespiegelter Reihenfolge auf den Bildschirm ausgibt. Verwenden Sie für die Tastatureingabe nur System.in.read() ohne BufferedReader. Folgender Dialog sollte möglich sein:

Eingabe: abcdefghijklm
Ausgabe: mlkjihgfedcba

Bisher habe ich nur rausgefunden, dass System.in.read() etwas einlesen kann...
Mein erster Versuch der Eingabe:
Java:
public static int readValue() {
		int value = 0;
		
		try {
			while((value = System.in.read()) != 13) {
				System.out.println(value); // gibt ascii-code aus
			}
		} 
		catch (IOException e) { return 979899100; } // ascii abcd
		
		return value; 
	}

Über das Tauschen ansich hab ich mir zwar schon Gedanken gemacht, aber bisher keinen brauchbaren Ansatz gefunden!

Vielleicht hat ja jemand einen guten Tipp für mich!
Gruß
Felix
 
Hi.

Du solltest den wichtigen Hinweis beachten, das die Funktion rekursiv sein muß. Eine while-Schleife ist da völlig unnötig und fehl am Platz!

Und Bitoperationen nützen da gar nichts. Man darf ja auch kein Array verwenden!

Pseudo-Code:
Code:
function reverse() begin
  zeichen = System.read()

  if zeichen != Enter then
    reverse()
  fi
  System.write(zeichen)
end
Gruß
 
Da war deepthroat wohl ein wenig fixer mit dem Pseudocode, hier jedoch eine mögliche reale Implementierung:

Java:
import java.io.*;

public class Reverse {
	public static void main( String[] args ) {
		next();
	}

	public static void next() {
		int value;
		try {
			value = System.in.read();
		} catch ( IOException e ) {
			return;
		}

		// Wenn Stream Input beendet, verlasse Methode hier
		if ( value == 13 || value < 0 ) {
			return;
		}

		// nächstes Zeichen lesen
		next();
		// Ausgabe dieses Zeichens NACH der Ausgabe des nachfolgenden Zeichens
		System.out.print( (char) value );
	}
}
 

Neue Beiträge

Zurück