Hallo zusammen,
Ich habe einen Rechner programmiert, der mir Dezimalzahlen in Hexadezimalzahlen umrechnet. Dachte ich jedenfalls. Ich habe ihn mal ein wenig getestet und gemerkt, dass bei verschiedenen Zahlen, verschiedene Ergebnisse herauskommen.
Der Quelltext sieht wiefolgt aus:
Ich sage also, dass der Button btn_funktion eine Zahl aus dem tfd_dezimal nimmt und diese durch 16 teilt, einmal restlos und einmal mit Rest. Danach soll er den Quotienten aus der restlosen Teilung nehmen und diesen erneut einmal restlos und einmal mit Rest teilen.
Danach sage ich, dass wenn der erste Quotient 10 ist, er diesen als A ausgeben soll und wenn er 11 ist, dann als B usw. bis 15, welches ein F ist. Dasselbe soll er mit dem 2. Quotienten tun.
Abschliessend soll er beide Quotienten ausgeben. Dies funktioniert auch soweit. Wenn ich eine 26 umwandeln moechte, gibt er mir z.B. korrekterweise 1A aus. Gebe ich hingegen 255 ein, dann gibt er mir F15 aus. Hatte ich ihm aber nicht gesagt, dass, wenn er 15 ausgeben will, dies ein F sei? Habe ich einen logischen Fehler gemacht oder ist mein Compiler defekt?
Danke fuer eure Hilfe
Gruss
f10
Ich habe einen Rechner programmiert, der mir Dezimalzahlen in Hexadezimalzahlen umrechnet. Dachte ich jedenfalls. Ich habe ihn mal ein wenig getestet und gemerkt, dass bei verschiedenen Zahlen, verschiedene Ergebnisse herauskommen.
Der Quelltext sieht wiefolgt aus:
Java:
public void btn_funktion_ActionPerformed(ActionEvent evt) {
//Variablendeklaration
int a, h, hh, g, gg;
//Eingabe
a = Integer.parseInt(tfd_dezimal.getText());
//Verarbeitung
h = a / 16;
hh = a % 16;
g = h / 16;
gg = h % 16;
if (gg==10){
tfd_hexa.setText("A"+""+hh);
return;
}
if (gg==11){
tfd_hexa.setText("B"+""+hh);
return;
}
if (gg==12){
tfd_hexa.setText("C"+""+hh);
return;
}
if (gg==13){
tfd_hexa.setText("D"+""+hh);
return;
}
if (gg==14){
tfd_hexa.setText("E"+""+hh);
return;
}
if (gg==15){
tfd_hexa.setText("F"+""+hh);
return;
}
if (hh==10){
tfd_hexa.setText(gg+"A");
return;
}
if (hh==11){
tfd_hexa.setText(gg+"B");
return;
}
if (hh==12){
tfd_hexa.setText(gg+"C");
return;
}
if (hh==13){
tfd_hexa.setText(gg+"D");
return;
}
if (hh==14){
tfd_hexa.setText(gg+"E");
return;
}
if (hh==15){
tfd_hexa.setText(gg+"F");
return;
}
//Ausgabe
tfd_hexa.setText(gg+""+hh);
}
Ich sage also, dass der Button btn_funktion eine Zahl aus dem tfd_dezimal nimmt und diese durch 16 teilt, einmal restlos und einmal mit Rest. Danach soll er den Quotienten aus der restlosen Teilung nehmen und diesen erneut einmal restlos und einmal mit Rest teilen.
Danach sage ich, dass wenn der erste Quotient 10 ist, er diesen als A ausgeben soll und wenn er 11 ist, dann als B usw. bis 15, welches ein F ist. Dasselbe soll er mit dem 2. Quotienten tun.
Abschliessend soll er beide Quotienten ausgeben. Dies funktioniert auch soweit. Wenn ich eine 26 umwandeln moechte, gibt er mir z.B. korrekterweise 1A aus. Gebe ich hingegen 255 ein, dann gibt er mir F15 aus. Hatte ich ihm aber nicht gesagt, dass, wenn er 15 ausgeben will, dies ein F sei? Habe ich einen logischen Fehler gemacht oder ist mein Compiler defekt?
Danke fuer eure Hilfe
Gruss
f10