Umrechnen Basis 2-36, Probleme mit Basis 36

eclipseworker

Bekanntes Mitglied
Ich habe einen Code, wie ich in hier schon mal irgendwo gefunden habe, um ganze Zahlen in anderen Basen darzustellen (2-36):
Java:
 private String basisArray[]={"0", "1", "2", "3", "4", "5", "6", "7", "8", "9","A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "S", "T","U", "V", "W", "X", "Y", "Z"};
    public String zahlZurBasisRek(int zahl, int basis) {
        if(basis<2 || basis>basisArray.length){
            return "Error";
        }
        int rest;
        String ergebnis = "";
        if(zahl<0){
            zahl=Math.abs(zahl);
            ergebnis="-";
        }
        // Abbruchbedingung
        if(zahl < basis){
            return ""+zahl; 
        }
        rest = zahl % basis;
        ergebnis = basisArray[rest] + ergebnis;
        zahl = zahl / basis;
        return ergebnis + zahlZurBasisRek(zahl , basis);
    }
Das Ergebnis muss natürlich zu erst invertiert werden was aber kein Problem ist.
Ein paar Dinge bereiten mir Kopfzerbrechen:
Erstens bei negativen Zahlen ist das Minus an zweiter und nicht an erster Stelle, Basis 36 funktioniert nicht (gibt einen Error) und drittens suche ich einen Ansatz wie die Zahl als double eingeben kann. Den Ansatz dieser Methode erstmal den ganzen Zahlteil umzuwandeln und mich dann um den Rest zu kümmern habe ich schon:
Java:
public String zahlZurBasisRek(double zahl, int basis) {
        if(basis<2 || basis>basisArray.length){
            return "Error";
        }
        String r=""; // Zur Rückgabe
        r+=zahlZurBasisRek((int)zahl, basis);
        double hinternKomma=zahl-(int)zahl;
        if(hinternKomma!=0){
               r+=".";
               while(hinternKomma!=(int)hinternKomma){
                     hinternKomma*=basis;
                     r+=(int)hinternKomma;
                     hinternKomma-=(int)hinternKomma;
               }
        }
     return r;
}
Aber irgendwie funktioniert das nicht.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> Erstens bei negativen Zahlen ist das Minus an zweiter und nicht an erster Stelle
schau dir doch an wie du deinen Code zusammensetzt, was passiert mit der ergebnis-Variable, falls sie zunächst auf "-" gesetzt wird?
das musst du anders bearbeiten, das "-" separat speichern bzw. nur einen boolean und am Ende, nach der Rekursion als letzten Schritt vorne an "-" anfügen

> Basis 36 funktioniert nicht (gibt einen Error)
welch ein simpler Fehler, nicht mal den untersuchst du selber?
wie man an deinem if sieht, kann das ja eigentlich nur sein, wenn das Array nicht 36 lang ist,
und tatsächlich ist es nur 35 lang, das hast du nie auch nur einmal ausgegeben?
welcher Buchstabe jetzt fehlt muss man hoffentlich nicht auch noch vorsagen ;)

beim double-Rest schreibst du keine Fehlermeldung,
ich vermute Endlosschleife, das wäre jedenfalls ein denkbarer Fehler:
0.2, Basis 6 -> 1.2, 1 wird abgeschnitten, 0.2 bleibt, dasselbe Spiel von vorne,
falsch muss das nicht sein, ist dann so wie 1/3 = 0.3333.. im Dezimalsystem, musst nur auf Abbruch achten

falls noch andere Fehler bestehen dann die wenigsten etwas im Detail beschreiben
 

irgendjemand

Top Contributor
natürlich funktioniert 36 nicht ... genau so wenig wie 2 ... denn dein if prüft

größer als 2 ODER kleiner als 36 ...

korrekt müsste es aber lauten

größer-gleich 2 ODER kleiner-gleich 36 ...

also wird aus
Java:
if(basis<2||basis>36)
das hier
Java:
if(basis<=2||basis>=36)

auch würde ich hier von anfang an StringBuilder nutzen ... weil nichts anderes macht der compiler draus ...
 

eclipseworker

Bekanntes Mitglied
natürlich funktioniert 36 nicht ... genau so wenig wie 2 ... denn dein if prüft

größer als 2 ODER kleiner als 36 ...

korrekt müsste es aber lauten

größer-gleich 2 ODER kleiner-gleich 36 ...

also wird aus
Java:
if(basis<2||basis>36)
das hier
Java:
if(basis<=2||basis>=36)

auch würde ich hier von anfang an StringBuilder nutzen ... weil nichts anderes macht der compiler draus ...
Wenn ich größer gleich 36 hernehme bekomme ich ein ArrayIndexOutOfBoundsException. 2 hingegen funktioniert gut.
 

irgendjemand

Top Contributor
naja ... weil du ja auch nur gesamt 35 elemente im array hast ... man sollte das alphabet schon können

... P , Q , R , S , T ...

vielleicht passt es dann ...

*sry ... aber selbst SlaterB hat das schon bemerkt ...
 

eclipseworker

Bekanntes Mitglied
naja ... weil du ja auch nur gesamt 35 elemente im array hast ... man sollte das alphabet schon können

... P , Q , R , S , T ...

vielleicht passt es dann ...

*sry ... aber selbst SlaterB hat das schon bemerkt ...

Jetzt komme etwas blind vor. :eek:
Übrigens der Minuspart klappt jetzt auch (es ist die seltene Gelegenheit wo die Reinfolge bei einer Addtion eine Rolle spielt:
Java:
ergebnis = ergebnis+basisArray[rest];
statt
Java:
ergebnis = basisArray[rest]+ergebnis;
. Das Nachkomma immer noch nicht.
 

irgendjemand

Top Contributor
wenn du strings anstatt mit "+" mit einem StringBuilder zusammensetzen würdest *wie es der compiler letztendlich übersetzt* dann wäre dir das eher aufgefallen ...
 
S

SlaterB

Gast
für den Fall dass atsächlich geändert wurde:
natürlich funktioniert 36 nicht ... genau so wenig wie 2 ... denn dein if prüft

größer als 2 ODER kleiner als 36 ...

korrekt müsste es aber lauten

größer-gleich 2 ODER kleiner-gleich 36 ...

also wird aus
Java:
if(basis<2||basis>36)
das hier
Java:
if(basis<=2||basis>=36)
??
falsch.., der Vergleich war vorher richtig, nichts zu ändern,
mit dem neuen Vorschlag würde 2 abgelegt, vorher nur alles KLEINER 2, also 1, 0, -1 usw
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Uhrzeitespanne in Integer Wert umrechnen Java Basics - Anfänger-Themen 1
M Weitere Längen umrechnen Java Basics - Anfänger-Themen 2
W Stellenwertsysteme Umrechnen Java Basics - Anfänger-Themen 12
W Stellenwertsysteme umrechnen Java Basics - Anfänger-Themen 22
C Gleitkommazahl in Dezimalzahl umrechnen Java Basics - Anfänger-Themen 4
B Relativen Anteil von zwei Datümer auf Monatsebene umrechnen Java Basics - Anfänger-Themen 130
P Zeichenkette mit Binärzahl in Dezimalzahl umrechnen Java Basics - Anfänger-Themen 3
F Koordinaten umrechnen Java Basics - Anfänger-Themen 10
Viktormk Methoden Zahlensysteme umrechnen / "Quartärsystem" Java Basics - Anfänger-Themen 4
GreenTeaYT Datentypen Fahrenheit - Celsius Umrechnen 2in1 Variable? Java Basics - Anfänger-Themen 10
D Liste mit Zeitstempeln in Arbeitszeit umrechnen Java Basics - Anfänger-Themen 7
A Software zum Umrechnen römischer Zahlen Java Basics - Anfänger-Themen 10
N Zahlensysteme umrechnen; Probleme bei Kommazahlen Java Basics - Anfänger-Themen 3
B tageszahl in Datum umrechnen Java Basics - Anfänger-Themen 6
H Umrechnen Aufgabe Java Basics - Anfänger-Themen 3
M Compiler-Fehler Binäre Zahlen in Dezimalzahlen umrechnen Java Basics - Anfänger-Themen 3
R Minuten umrechnen. Java Basics - Anfänger-Themen 9
E Datentypen Von int in double umrechnen. Java Basics - Anfänger-Themen 3
E Datum und Uhrzeit von UTC in MET umrechnen Java Basics - Anfänger-Themen 6
J Gleitkommazahl in Dezimalzahl umrechnen Java Basics - Anfänger-Themen 5
V Programm zum Umrechnen von Pferdestärken in kW Java Basics - Anfänger-Themen 9
P Datentypen int in Prozent "umrechnen" Java Basics - Anfänger-Themen 4
V Tool zum Umrechnen Dezimal in Hex Java Basics - Anfänger-Themen 7
Developer_X Kreiskoordinaten in Normale Koordinaten umrechnen Java Basics - Anfänger-Themen 4
N Laufzeit in Nanosekunden - in Minuten umrechnen Java Basics - Anfänger-Themen 6
N Tage in Jahre, Monate umrechnen Java Basics - Anfänger-Themen 1
G Uhrzeit hh:mm:ss in minuten umrechnen Java Basics - Anfänger-Themen 4
G Timestamp in Minuten umrechnen Java Basics - Anfänger-Themen 8
S Millisekunden umrechnen Java Basics - Anfänger-Themen 12
J Datum in Kalenderwoche umrechnen Java Basics - Anfänger-Themen 3
F Seknunden in dd.MM.YYYY umrechnen Java Basics - Anfänger-Themen 9
G Farbwerte umrechnen Java Basics - Anfänger-Themen 4
M mm in cm umrechnen und auf 5er oder auf 10er aufrunden! Java Basics - Anfänger-Themen 2
G Maßeinheiten umrechnen Java Basics - Anfänger-Themen 3
D Formel zum umrechnen in java o_O Java Basics - Anfänger-Themen 9
R in Binärzahlen umrechnen Java Basics - Anfänger-Themen 15
M Dateigrösse umrechnen? Java Basics - Anfänger-Themen 6
G Umrechnen von Zahlensystemen Java Basics - Anfänger-Themen 7
G byte und double umrechnen Java Basics - Anfänger-Themen 3
Jose05 Logarithmus zur Basis 2 Java Basics - Anfänger-Themen 7
I Labyrinth auf der Basis eines rekursiven Algorithmus Java Basics - Anfänger-Themen 27
O von Basis 10 in Basis x umwandeln Java Basics - Anfänger-Themen 5
D Methoden Logarithmus zur Basis 2 Java Basics - Anfänger-Themen 3
J Interface Wechsel in den Windows7-Basis Modus Java Basics - Anfänger-Themen 7
A Potenzen, Exponenten, Basis Java Basics - Anfänger-Themen 3
B Zahl Basis 10 in DualDezimal 16bit umwandeln Java Basics - Anfänger-Themen 8
J Berechnung des aktuellen Alters auf Basis des Geburtstags Java Basics - Anfänger-Themen 45
S Gleitkommazahl zur Basis b berechnen Java Basics - Anfänger-Themen 2
A Zahl zur Basis Java Basics - Anfänger-Themen 6
P Umrechnung von Basis b zu Dezimalzahl Java Basics - Anfänger-Themen 7
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
I Projekte in IDE untereinander sharen / Probleme beim Build Java Basics - Anfänger-Themen 8
MiMa Probleme mit Datentyp long ?? Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
Jxhnny.lpz TicTacToe Spiel vs Computer. (Probleme) Java Basics - Anfänger-Themen 7
B Quiz mit RMI Probleme mit RMI start Java Basics - Anfänger-Themen 4
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
V Probleme Guessing Game Java Basics - Anfänger-Themen 8
hebein PDF Ausdruck auf Drucker - Probleme mit Format Java Basics - Anfänger-Themen 17
R JMenu/JMenuItem Probleme Java Basics - Anfänger-Themen 2
B Static vs non static und Probleme daraus Java Basics - Anfänger-Themen 13
J Probleme mit dem Debugger Java Basics - Anfänger-Themen 4
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
J Probleme mit Kompilierung Java Basics - Anfänger-Themen 11
B Probleme mit Zugriff auf Dateisystem Windows 10 ( jFileChooser) Java Basics - Anfänger-Themen 17
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
C Probleme mit paintComponent Java Basics - Anfänger-Themen 13
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
E JavaFX Editor Probleme mit der Zwischenablage Java Basics - Anfänger-Themen 12
C Probleme mit dem Erstellen und Importieren von Packages Java Basics - Anfänger-Themen 6
3 OOP erste Versuche, OOP zu verstehen. Probleme mit gettern und settern Java Basics - Anfänger-Themen 4
R Erste Schritte Probleme bei 2D Spielfeld, mit einzufügender "Person" Java Basics - Anfänger-Themen 5
P Probleme bei der Installation von JavaFX Java Basics - Anfänger-Themen 3
S Mehrere Probleme im Code Java Basics - Anfänger-Themen 7
D Probleme mit JFrame und der Größe Java Basics - Anfänger-Themen 8
Dimax String Probleme Java Basics - Anfänger-Themen 12
N Probleme beim printen von Arrays durch for Schleife Java Basics - Anfänger-Themen 3
Splayfer Java Array Probleme Java Basics - Anfänger-Themen 3
J Probleme bei IllegalArgumentException "werfen". Java Basics - Anfänger-Themen 1
K Probleme bei der Ausgabe - komme nicht weiter :/ Java Basics - Anfänger-Themen 15
X Probleme im Umgang mit PriorityQueue Java Basics - Anfänger-Themen 75
D Probleme mit dem Windowbuilder und JComboBox Java Basics - Anfänger-Themen 2
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
X Probleme mit Übungsaufgaben zu Zahlentypen Java Basics - Anfänger-Themen 4
G Probleme bei Aufgabe Java Basics - Anfänger-Themen 12
P Erste Schritte Probleme mit dem Programmieren Java Basics - Anfänger-Themen 12
B Probleme bei einer Aufgabe Java Basics - Anfänger-Themen 19
Franzi1001 Probleme mit Eclipse Java Basics - Anfänger-Themen 7
T Probleme bei Installation von JDK Java Basics - Anfänger-Themen 2
C Probleme mit String-Vergleich Java Basics - Anfänger-Themen 4
C Probleme bei Regex Java Basics - Anfänger-Themen 9
V Probleme mit Arrays Java Basics - Anfänger-Themen 8
D Kleine Probleme mit Split-Befehlen Java Basics - Anfänger-Themen 5
T Probleme mit Strings Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben