Methoden Zahlensysteme umwandeln mittels Rekursion

Kahoona510

Mitglied
Hallo Java-Forum!

Kurz zu mir: ich lerne gerade Java, habe sehr viel Freude daran und komme auch gut vorwärts. Dieses Forum ist ja echt klasse, ich werde mich in Zukunft sicher hier beteiligen!

Vielleicht kann mir jemand bei folgender Aufgabenstellung auf die Sprünge helfen:

Ich möchte ein Programm schreiben, das eine beliebige Zahl aus einem beliebigem Zahlensystem in ein anderes, beliebiges Zahlensystem überträgt. Und das ganze nur mithilfe von Rekursion und ohne Methoden der Math.-Bibliothek.

Eine Eingabe könnte so aussehen:

1100 2 3

Würde bedeuten: "Die Zahl 1100 ist im Zweiersystem und soll ausgegeben werden im Dreiersystem."

Die Zahlensysteme gehen aber nur von 2 bis 10, also beim Dezimalsystem ist Schluß.

Meine Überlegungen dazu:
Wahrscheinlich ist es sinnvoll, jede eingegebene Zahl zunächst mal ins Dezimalsystem zu übertragen und dann erst ins gewünschte System. Ist das sinnig? Oder sollte ich lieber "on-the-fly" zum Beispiel vom 2er- ins 3er-System übertragen?

Wie gesagt, im Moment gehe ich davon aus, dass es sinnvoll ist, jede Zahl zunächst ins Dezimalsystem zu übertragen. Denn wie ich eine Dezimalzahl in jedes andere Zahlensystem übertragen kann, weiß ich.

Aber das "ins-Dezimalsystem-Umwandeln" bereitet mir Probleme, zumindest, wenn ich es rekursiv lösen soll. Denn wenn ich rekursiv aufrufe, habe ich keine Zählvariable, die mir sagt, an welcher Stelle der Zahl ich gerade bin. Und eine Zählvariable in den Funktionsparameter einzubinden ist wahrscheinlich schlechter Stil.

Bin ich auf dem Holz- oder auf dem richtigen Weg? :)

Beste Grüße
kahoona
 

Kahoona510

Mitglied
Ich möchte es so aufbauen:

Java:
public class HUA0622 {
    public static void main (String[] args) {

        // Eingabe einlesen: die Zahl, das Quellsystem, das Zielsystem.
        int zahl = Integer.parseInt(args[0]);
        int qS = Integer.parseInt(args[1]);
        int zS = Integer.parseInt(args[2]);

        System.out.println(fromXToX(zahl, qS, zS));

    }

    // diese Funktion unterscheidet nachher, auf welche Funktionen die Parameter verteilt werden.
    public static int fromXToX (int zahl, int qS, int zS) {
      
    }

    // hier wird die Zahl aus einem beliebigen ins Dezimalsystem übersetzt.
    public static int fromXToDez (int zahl, int qS) {

    }

    // hier wird die Zahl aus dem Dezimalsystem ins gewünschte System übersetzt.
    public static int fromDezToX (int zahl, int zS) {

    }
}
 

Khal Drogo

Bekanntes Mitglied
Naja, wenn beim Dezimalsystem Schluss ist, kannst du als Abbruchbedingung so was wie zahl == 0 nehmen und die Rekursion mit fromXToDez(zahl / 10, qS) aufrufen. Dann musst du dir aber noch überlegen, wie du die Berechnung geschickt anstellst. Eine Zählvariable kannst du übrigens sehr wohl mit Hilfe einer Hilfsfunktion realisieren, die einen dritten Parameter enthält, der bei jedem Rekursionsschritt erhöht wird.

Mit freundlichen Grüßen
Xelsarion
 

Kahoona510

Mitglied
Für die, die es interessiert:

ich habe es jetzt hinbekommen. Wahrscheinlich relativ holprig (Zählvariable als Parameter in einer rekursiven Funktion??), aber funktioniert.

Java:
import java.lang.Math;

/*    Ich könnte mir gut vorstellen, dass meine Lösung zu kompliziert ist, aber anders
    habe ich es nicht hinbekommen.
    Die eingegebene Zahl wird zunächst erst mal ins Dezimalsystem umgerechnet (Funktion fromXToDez).
    Die Dezimalzahl wird dann ins gewünschte Zahlensystem umgerechnet (Funktion FromDezToX).
    Die erste Funktion FromXToX ist nur dafür zuständig, diese Verteilung zu strukturieren und ggf. die Umrechnung
    ins Dezimalsystem zu überspringen, falls die gegebene Zahl schon eine Dezimalzahl ist. */

public class HUA0622 {
    public static void main (String[] args) {

        // Eingabe einlesen: die Zahl, das Quellsystem, das Zielsystem.
        long zahl = Long.parseLong(args[0]);
        int qS = Integer.parseInt(args[1]);
        int zS = Integer.parseInt(args[2]);

        System.out.println(fromXToX(zahl, qS, zS));

    }

    // diese Funktion entscheidet, auf welche Funktionen die Parameter verteilt werden.
    public static String fromXToX (long zahl, int qS, int zS) {

        if (qS == 10) {
            return fromDezToX (zahl, zS);
        }

        else {
            return fromDezToX(fromXToDez(zahl, qS, 0), zS);
        }
    }

    // Hier wird die Zahl ins Dezimalsystem übersetzt.
    // der dritte Parameter c ist eine Zählvariable. Wahrscheinlich kein guter Stil,
    // aber anders habe ich es nicht hinbekommen.
    public static long fromXToDez (long zahl, int qS, int c) {

        if (zahl == 0) {
            return 0;
        }

        else {
            long temp = (long) Math.pow(qS, c);
            return ( ((zahl%10)*temp) + fromXToDez(zahl/10, qS, c+1) );
        }

    }

    // hier wird die Zahl aus dem Dezimalsystem ins gewünschte System übersetzt.
    public static String fromDezToX (long zahl, int zS) {
        if (zahl == 0) {
            return "";
        }

        else {
            return (fromDezToX(zahl/zS, zS) + zahl%zS);
            }
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
Viktormk Methoden Zahlensysteme umrechnen / "Quartärsystem" Java Basics - Anfänger-Themen 4
N Zahlensysteme umrechnen; Probleme bei Kommazahlen Java Basics - Anfänger-Themen 3
O Dezimalzahl in andere Zahlensysteme Java Basics - Anfänger-Themen 5
G Umwandlung in verschiedene Zahlensysteme Java Basics - Anfänger-Themen 4
J Zahlensysteme Java Basics - Anfänger-Themen 5
C Zahlensysteme Java Basics - Anfänger-Themen 2
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
R int in Ascci umwandeln Java Basics - Anfänger-Themen 7
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
S JAR zu EXE umwandeln Java Basics - Anfänger-Themen 22
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
E PDF Datei im xfdf-Datei umwandeln und auf dem Laufwerk ablegen Java Basics - Anfänger-Themen 0
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
C Rekursive Methode in Interative Methode umwandeln Java Basics - Anfänger-Themen 17
J Dezimalzahl in Bruch Umwandeln und Kürzen Java Basics - Anfänger-Themen 8
C Taschenrechner (switch) in Taschenrechner mit Methoden umwandeln Java Basics - Anfänger-Themen 115
J RSA Verschlüsselung Testen / byte[] in Objekt umwandeln Java Basics - Anfänger-Themen 1
S String umwandeln Java Basics - Anfänger-Themen 6
F Character umwandeln als Double Werte Java Basics - Anfänger-Themen 8
K String in Integer umwandeln Java Basics - Anfänger-Themen 4
O Datei in mehrere kleine Dateien umwandeln Java Basics - Anfänger-Themen 47
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
O von Basis 10 in Basis x umwandeln Java Basics - Anfänger-Themen 5
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
L String in Integer umwandeln Java Basics - Anfänger-Themen 3
I JSON Datei in Array umwandeln Java Basics - Anfänger-Themen 1
W Dezimalzahl in Binär umwandeln - Was sollte ich an meinem Programm verbessern? Java Basics - Anfänger-Themen 5
S \n nicht in Zeilenumbruch umwandeln Java Basics - Anfänger-Themen 5
W Dezimalzahlen in Binärzahl umwandeln. Wie möglich ? Java Basics - Anfänger-Themen 9
Vince42 NIO File Tree in XML umwandeln Java Basics - Anfänger-Themen 10
R Kompletten String umwandeln in Integer Java Basics - Anfänger-Themen 10
P 32 Bit Binärzahl Umwandeln in Dezimal Java Basics - Anfänger-Themen 8
H 32-Bit Zahl (Integer) in eine IPv4 Adresse umwandeln? Java Basics - Anfänger-Themen 2
Orkanson Datentypen Integer in String umwandeln/hinzufügen Java Basics - Anfänger-Themen 3
geekex Double zu String umwandeln in einer Methode Java Basics - Anfänger-Themen 28
MiMa String in Gross und Kleinbuchstaben umwandeln Java Basics - Anfänger-Themen 10
H JCalendar in String umwandeln Java Basics - Anfänger-Themen 9
P Wie kann ich mein Programm zu einer App umwandeln? Java Basics - Anfänger-Themen 4
M Beliebigen Text in *** umwandeln Java Basics - Anfänger-Themen 15
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
U RegEx alle Kommas bei den Zahlen in Punkt umwandeln Java Basics - Anfänger-Themen 3
E Von Double zu Long umwandeln Java Basics - Anfänger-Themen 9
L String in Binär umwandeln Java Basics - Anfänger-Themen 4
G .java in .jar umwandeln Eclipse Java Basics - Anfänger-Themen 12
W String auf char[] umwandeln Java Basics - Anfänger-Themen 3
K Double Wert runden und in Int umwandeln Java Basics - Anfänger-Themen 7
K For Schleife in While Schleife umwandeln Java Basics - Anfänger-Themen 5
C Array in String umwandeln Java Basics - Anfänger-Themen 5
W Wie kann man diesen Code in einen Code umwandeln, der folgendes können sollte? Java Basics - Anfänger-Themen 1
I String zu File umwandeln Java Basics - Anfänger-Themen 2
N Collections String in HashMap umwandeln Java Basics - Anfänger-Themen 3
G tga Datei lesen und in eine matrix umwandeln Java Basics - Anfänger-Themen 1
G Bilddaten in Matrix umwandeln Java Basics - Anfänger-Themen 1
L Java CMD Console in String umwandeln? Java Basics - Anfänger-Themen 2
D String zu int umwandeln Java Basics - Anfänger-Themen 2
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
K Wie .java in .jar umwandeln? Java Basics - Anfänger-Themen 5
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4
W String Array in Int umwandeln um auf Zahl zu überprüfen Java Basics - Anfänger-Themen 4
G double in float umwandeln Java Basics - Anfänger-Themen 2
M csv in xlsx umwandeln Java Basics - Anfänger-Themen 7
F Char in Long umwandeln? Java Basics - Anfänger-Themen 2
D String in FileInputStream umwandeln Java Basics - Anfänger-Themen 2
J Mit Eclipse PLZ in Koordinaten umwandeln und ausgeben Java Basics - Anfänger-Themen 3
A Erste Schritte Buchstaben in zahlen umwandeln Java Basics - Anfänger-Themen 4
T opengl Dreick in einen Würfel umwandeln Java Basics - Anfänger-Themen 0
S Groß bzw. Klein Buchstaben umwandeln (gemischt) Java Basics - Anfänger-Themen 1
D Methode mit mehren Rekursiven aufrufen in Methode mit einem Rekursiven Aufruf umwandeln! Java Basics - Anfänger-Themen 1
V String in Byte umwandeln Java Basics - Anfänger-Themen 11
S Element von List<E> in String umwandeln Java Basics - Anfänger-Themen 3
N Unsymmetrisches mehrdimensionales Array in eindimensionales umwandeln Java Basics - Anfänger-Themen 2
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
W Umwandeln von Dezimal in Dual - Ausgabe incl. Rechenschritte Java Basics - Anfänger-Themen 11
AssELAss String in Datum umwandeln Java Basics - Anfänger-Themen 4
J array in String umwandeln Java Basics - Anfänger-Themen 1
J array in String umwandeln Java Basics - Anfänger-Themen 3
S Klasse properties - Probleme beim umwandeln Java Basics - Anfänger-Themen 3
1 Binärdarstellung (als String) in Dezimalzahl umwandeln Java Basics - Anfänger-Themen 8
J subStrings zu int Array umwandeln? Java Basics - Anfänger-Themen 19
K JTextField auslesen, in int umwandeln und in einer anderen Klasse als Zähler verwenden Java Basics - Anfänger-Themen 3
C '.java' in '.exe' umwandeln. Java Basics - Anfänger-Themen 2
T Operatoren Float in byte umwandeln Java Basics - Anfänger-Themen 3
P Datum umwandeln Java Basics - Anfänger-Themen 5
P [B@6a435f in normalen Zahlen umwandeln, wie? Java Basics - Anfänger-Themen 14
M Input/Output Viele short aus Datei lesen und von Little Endian zu Big Endian umwandeln Java Basics - Anfänger-Themen 12
J C++ Bitmanipulations-Programm in Java umwandeln Java Basics - Anfänger-Themen 10
B Zahl Basis 10 in DualDezimal 16bit umwandeln Java Basics - Anfänger-Themen 8
X Datentypen Int oder String in Bits/Bytes umwandeln Java Basics - Anfänger-Themen 10
W Datentypen String in Quellcode umwandeln Java Basics - Anfänger-Themen 25
J int mit führenden Nullen in String umwandeln Java Basics - Anfänger-Themen 5
B datentyp in binär umwandeln Java Basics - Anfänger-Themen 5
A String in Double umwandeln mit Tests Java Basics - Anfänger-Themen 3
S ArrayList<Byte> in String umwandeln Java Basics - Anfänger-Themen 5
S Datumsstring in datetime umwandeln Java Basics - Anfänger-Themen 2
T int als 100% umwandeln? Java Basics - Anfänger-Themen 7
G Fehler beim Umwandeln eines Strings in int Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben