Ich habe einen Code, wie ich in hier schon mal irgendwo gefunden habe, um ganze Zahlen in anderen Basen darzustellen (2-36):
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:
Aber irgendwie funktioniert das nicht.
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);
}
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;
}
Zuletzt bearbeitet: