Hallo,
ich benötige mal wieder etwas Unterstützung.
Ich habe mir ein kleines Programm geschrieben, welches in der Lage ist, Zahlen, egal welcher Basis in eine andere Basis umzurechnen.
Das funktioniert auch sehr gut, solange ich als Ausgangsbasis nicht höher als Dezimalzahlen gehe.
Alles über Dezimal würde erfordern, das ich Buchstaben eingebe. Sobald ich das aber mache, schmeisst mich das Programm raus.
Was muss ich machen, damit z.B. bei Eingabe des Buchstaben F der Wert 15 erkannt wird?
Danke und gruß
ich benötige mal wieder etwas Unterstützung.
Ich habe mir ein kleines Programm geschrieben, welches in der Lage ist, Zahlen, egal welcher Basis in eine andere Basis umzurechnen.
Das funktioniert auch sehr gut, solange ich als Ausgangsbasis nicht höher als Dezimalzahlen gehe.
Alles über Dezimal würde erfordern, das ich Buchstaben eingebe. Sobald ich das aber mache, schmeisst mich das Programm raus.
Was muss ich machen, damit z.B. bei Eingabe des Buchstaben F der Wert 15 erkannt wird?
Danke und gruß
Java:
import java.io.*;
import javagently.*;
class wandel
{
public static void main (String Args[])
throws IOException
{
// Einleitung
System.out.println("***************************************************");
System.out.println("** Mit diesem Programm ist es möglich **");
System.out.println("** eine beliebige Zahl einer beliebigen Basis **");
System.out.println("** in eine andere beliebige Basis umzurechnen **");
System.out.println("***************************************************");
//Variablen festlegen
String zahl1 ;
int basis1 = 0 ;
int basis2 = 0;
String HEX = "0123456789ABCDEF";
String b;
int z = 0;
int k= 0;
int i = 0;
int a = 0;
int e = 0;
int f = 0;
int d= 0;
int rest[] = new int[32];
//Programmablauf starten
System.out.println("");
System.out.println("");
System.out.println("******************************************************************");
System.out.println("** Bitte geben Sie gleich die erste Basis der ersten Zahl ein. **");
System.out.println("** Beachten Sie bitte: Durch Eingabe der Basis legen Sie fest, **");
System.out.println("** welche Ziffernmenge gültig ist. Die zulässige Menge ist n-1 **");
System.out.println("** Zulässige Ziffernmengen sind von 1 - 0 - F **");
System.out.println("** Falsche Eingaben führen zum Abbruch des Programms **");
System.out.println("******************************************************************");
BufferedReader in=
new BufferedReader (
new InputStreamReader (System.in));
//Eingabe Basis 1
System.out.println("");
System.out.println("Bitte geben Sie die erste Basis ein");
System.out.println("Zulässige Werte sind 2 - 16");
basis1 = javagently.Text.readInt(in);
//Prüfen, ob eine zulässige Basis eingegeben wurde. Ggf Programmabbruch
if (basis1<2 || basis1 >16) {
System.out.println("Die Eingabe " +basis1+ " liegt ausserhalb des zulässigen Bereichs");
}
//Eingabe der ersten Ziffernfolge mit anschließender Prüfung ob der Zahlenbereich zulässig ist
else {
System.out.println("Bitte geben Sie Ihre Zahl an.");
System.out.println("Die Zahl darf nur Ziffern aus der Menge 0 bis " +(HEX.charAt(basis1-1))+ " enthalten");
zahl1 = javagently.Text.readString(in);
//abbruch bei ungültiger Ziffernmenge
for (i=0;i<zahl1.length() ;i++ ) {
if (zahl1.charAt(i)> HEX.charAt(basis1-1)) {
System.out.println("Das war nix");
System.exit(-1);
}
}
//Auswahl der Zielbasis mit gleichem Abbruchkriterium wie Basis 1
System.out.println("----------------------------------------------------------------------");
System.out.println("");
System.out.println("Bitte geben Sie die Zielbasis ein:");
System.out.println("Zulässige Werte sind 2 - 16");
basis2 = javagently.Text.readInt(in);
System.out.println("");
System.out.println("-----------------------------------------------------------------------");
System.out.println("");
if (basis2<2 || basis2 >16) {
System.out.println("Die Eingabe " +basis2+ " liegt ausserhalb des zulässigen Bereichs");
System.exit(-1);
} // end of if
//Array zum reinschreiben der einzelnen Ziffern
String summe[] = new String [zahl1.length()];
for (i= 0;i<zahl1.length() ;i++ ) {
k =((zahl1.charAt(i)-48));
b = String.valueOf(k);
summe[i] = b;
} // end of for
//Beginn der Rechenoperation mit den jeweiligen Ziffern
// Schritt 1: Multiplikation der Ziffer mit der entsprechend potenzierten Basis
// Schritt 2: Zusammenrechnen der Zwischenergebnisse zur Berechnung der Endziffer zur gewählten Basis 2
for (z=i-1 ;z>=0 ;z-- ) {
Integer v = Integer.valueOf(summe[z]);
double w = v* Math.pow(basis1,a);
int p = (int)w;
System.out.println("Ziffer " +z+ " * Basis^"+a);
System.out.println("= " +summe[z]+" * " +basis1+"^"+a+ " = " +p);
System.out.println("");
e +=p ;
System.out.println("Ergebnis " +e);
System.out.println("");
System.out.println("");
a++ ;
} // end of for
// Berechnung: Teilen des Ergebnisses durch die gewählte Basis2
// Evtl Rest gleich Ziffer des Ergebnisses --> Wiederholung mit Restquotient solange > 0
System.out.println("Berechnung der Zahl zur Basis " +basis2);
System.out.println("---------------------------------------------------------");
while (e > 0) {
rest[d] = e%basis2;
e/=basis2;
d++;
}
System.out.println("-------------------------------------------------------");
for (f = d-1 ;f>=0 ;f-- ) {
System.out.print(HEX.charAt(rest[f]));
}
}
}
}