Jede zweite Ziffer entfernen (rekursiv)

Hallo Leute,
ich bräuchte eure Hilfe, da ich einfach nicht auf die Lösung komme. Und zwar gab es bei uns eine Klausuraufgabe in der wir eine Methode schreiben sollten, in der jede zweite Ziffer einer Zahl z.B. 13567 entfernt werden soll. In der Ausgabe sollte nun --> 157 erscheinen. Wir sollten dies ohne Schleifen und ohne if-Anweisungen durchführen.
Mein Ansatz war folgender:

12383
Das würde für die Zahl die in der Klausur gefragt war funktionieren. Aber wenn jetzt die Zahl 135678 gegeben wäre, dann hätte ich da ein Problem, da nun 368 in der Ausgabe erscheint.
Danke für eure Hilfe :)
 
Oh da gab es schon etwas zu. Trotzdem danke!
Wenn ich nun mit einer weiteren Methode arbeite komme ich nun zum folgenden Problem:
12384
Wenn ich die 13567 mit jedeErsteZiffer aufrufe komme ich zum richtigen Ergebnis, was mit jedeZweiteZiffer nicht funktioniert.
Jedoch wenn ich 135678 mit jedeErsteZiffer aufrufe bekomme ich ein falsches Ergebnis und zwar 1368, was diesmal mit jedeZweiteZiffer aber funtkioniert.
 
Da ist tatsächlich noch ein Fehler drin, den man aber finden und beheben kann.
Erstmal aber die Frage: Ist mit "jede zweite Ziffer" gemeint: Jede zweite Ziffer in Richtung der höherwertigen zu den niedrigwertigen Ziffern, oder in Richtung der niedrigwertigen zu den höherwertigen Ziffern.
Bei ersterem wäre bei 123456 das korrekt Ergebnis: 135, bei letzterem wäre das Ergebnis hier 246
 
Naja, also ohne jegliche Verzweigungs-Logik geht es nicht. :)

EDIT: @leroy7 Wenn die Leserichtung von rechts nach links (also von niedrigwertige Ziffer zu höherwertige Ziffer) sein soll, ist deine erste Lösung im ersten Post schon optimal und man braucht tatsächlich keine zweite Methode!
Wenn von links nach rechts gemeint ist, wird es um einiges schwieriger, da man dann zuerst die Zahl umdrehen muss.
 
Java:
public class Test {
    public static int second(int zahl, int step) {
        return zahl < 10 ? zahl : (
            step % 2 == 0 ? 10 * second(zahl/10, step-1) + zahl % 10
                          : second(zahl/10, step-1)
        );
    }

    public static int second(int zahl) {
        return second(zahl, (int)(Math.log(zahl)/Math.log(10)));
    }

    public static void main(String[] args) {
        System.out.println(second(135678));
        System.out.println(second(35678));
        System.out.println(second(5678));
        System.out.println(second(678));
        System.out.println(second(78));
        System.out.println(second(8));
    }
}
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben