Hallo liebes Forum,
ich muss für ein Fach an meiner Uni ein Programm erstellen, dass über JOptionPane eine Dezimalzahl erhält und diese dann in ein 5-Bit Binärzahl umwandelt. Das bekomme ich auch soweit hin. Das Problem ist, dass wenn ich die Dezimalzahl 32 eingebe eine ArrayIndexOutOfBoundsException entsteht, weil die 32 als Dezimalzahl eine 6-Bit Binärzahl ist. Wenn ich aber nach der 32, die 31 eingebe, wird diese Zahl nicht umgewandelt und das Programm befindet sich dann in einer Endlosschleife bis ich 0 eingebe.
Kann mir bitte jemand sagen wo der Fehler ist? Ich wäre da sehr dankbar.
LG
Superbyte
ich muss für ein Fach an meiner Uni ein Programm erstellen, dass über JOptionPane eine Dezimalzahl erhält und diese dann in ein 5-Bit Binärzahl umwandelt. Das bekomme ich auch soweit hin. Das Problem ist, dass wenn ich die Dezimalzahl 32 eingebe eine ArrayIndexOutOfBoundsException entsteht, weil die 32 als Dezimalzahl eine 6-Bit Binärzahl ist. Wenn ich aber nach der 32, die 31 eingebe, wird diese Zahl nicht umgewandelt und das Programm befindet sich dann in einer Endlosschleife bis ich 0 eingebe.
Kann mir bitte jemand sagen wo der Fehler ist? Ich wäre da sehr dankbar.
LG
Superbyte
Java:
import javax.swing.JOptionPane;
public class DezToBin {
/* Globale Variablen anlegen, damit die beiden Do-While-Schleifen auf
* diese Variablen zugreifen koennen.
*/
public String eingabe, eingabe1;
public int dez, dez1 = 0;
public int i, n, l = 0;
public boolean input1 = true;
public byte[] binZahl1 = new byte[5];
public byte[] binZahl2 = new byte[5];
public void checkAndComputeInput() {
eingabe = JOptionPane.showInputDialog("Bitte 1. Dezimalzahl eingeben");
// Oeffnet bei Falscheingabe erneut die Eingabemaske
do {
// try-catch-Block um moegliche Fehler abzufangen
try {
dez = Integer.parseInt(eingabe);
input1 = true;
// Berechnet die Eingabe in eine Binaerzahl um
while (dez > 0) {
if (dez % 2 == 0)
binZahl1[i] = 0;
else
binZahl1[i] = 1;
i++;
dez /= 2;
}
} catch (ArrayIndexOutOfBoundsException aioobe) {
input1 = false;
eingabe = JOptionPane.showInputDialog("Zahl nicht als 5-Bit Binaerzahl darstellbar.");
} catch (NumberFormatException nfe) {
input1 = false;
eingabe = JOptionPane.showInputDialog("Ungueltige Eingabe. Bitte Eingabe wiederholen und eine Zahl eingeben");
} catch (Exception e) {
input1 = false;
System.out.println("Unbekannter Fehler");
}
} while (dez < 0 || input1==false);
System.out.print("Die 1. Binaerzahl: ");
for (int k = binZahl1.length - 1; k >= 0; k--) {
System.out.print(binZahl1[k]);
}
System.out.println();
}
}