Erste Schritte Dezimal in Hexadezimal

f10

Aktives Mitglied
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:

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? o_O

Danke fuer eure Hilfe

Gruss
f10
 

TKausL

Top Contributor
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? o_O

Deine IF's funktionieren so nicht. wenn gg bereits eine Zahl über 10 ist wird der Buchstabe genommen, die zahl aus hh hintendran gehangen und returned. Schreib dir eine Methode welche eine Zahl zwischen 0-15 umwandelt in einen String (0-F).

Edit @Bernd Hohmann: Bei Integer.toHexString geht aber der Lerneffekt verloren ;)
 

Bernd Hohmann

Top Contributor
Zuletzt bearbeitet:

f10

Aktives Mitglied
Ich habe das Ganze jetzt mal fuer jede Eventualitaet versucht zu formulieren, aber selbst das kompiliert er zwar, aber will jetzt manchmal sogar bei niedrigen Zahlen nicht mal richtig rechnen.

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==0){
      tfd_hexa.setText(""hh);
      return;
    }
    if (gg==1){
      tfd_hexa.setText("1"+""+hh);
      return;
    }
    if (gg==2){
      tfd_hexa.setText("2"+""+hh);
      return;
    }
    if (gg==3){
      tfd_hexa.setText("3"+""+hh);
      return;
    }
    if (gg==4){
      tfd_hexa.setText("4"+""+hh);
      return;
    }
    if (gg==5){
      tfd_hexa.setText("5"+""+hh);
      return;
    }
    if (gg==6){
      tfd_hexa.setText("6"+""+hh);
      return;
    }
    if (gg==7){
      tfd_hexa.setText("7"+""+hh);
      return;
    }
    if (gg==8){
      tfd_hexa.setText("8"+""+hh);
      return;
    }
    if (gg==9){
      tfd_hexa.setText("9"+""+hh);
      return;
    }
    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==0){
      tfd_hexa.setText(gg+"0");
      return;
    }
    if (hh==1){
      tfd_hexa.setText(gg+"1");
      return;
    }
    if (hh==2){
      tfd_hexa.setText(gg+"2");
      return;
    }
    if (hh==3){
      tfd_hexa.setText(gg+"3");
      return;
    }
    if (hh==4){
      tfd_hexa.setText(gg+"4");
      return;
    }
    if (hh==5){
      tfd_hexa.setText(gg+"5");
      return;
    }
    if (hh==6){
      tfd_hexa.setText(gg+"6");
      return;
    }
    if (hh==7){
      tfd_hexa.setText(gg+"7");
      return;
    }
    if (hh==8){
      tfd_hexa.setText(gg+"8");
      return;
    }
    if (hh==9){
      tfd_hexa.setText(gg+"9");
      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 hatte auch schon versucht, das Ganze in 2 Textfelder separat ausgeben zu lassen, also erst gg und im 2. dann hh aber selbst das hat er genauso wie bei einem ausgegeben. Er ignoriert zeilenweise meinen Code, aber warum tut er das?
 
S

SlaterB

Gast
überleg doch mal ne Sekunde was du da überhaupt machst!
angenommen gg und hh sind beide 14
erst kommt
Java:
    if (gg==14){
      tfd_hexa.setText("E"+""+hh);
      return;
    }
dran, was passiert? "E14" steht im Textfeld,

dann kommt
Java:
    if (hh==14){
      tfd_hexa.setText(gg+"E");
      return;
    }
dran -> "14E" ins Textfeld, gg ist wieder schlecht

da nützt es nichts, blind hunderte Code-Zeilen zu kopieren, Fleiß ist löblich, aber ersetzt nicht gerade häufig Technik und vor allem Denken

wie schon gesagt wurde, brauchst du eine Methode, die zu einer Ziffer den richtigen String zurückliefert,
dann baue für eine Zahl aus mehreren Ziffern den String zusammen:
String gesamt = get(gg) + get(hh);
evtl. noch danach auf Streichen führender Nullen achten,
nicht ganz so wichtig, auch "0F" ist zunächst eine akzeptable Ausgabe
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ostkreuz Methoden Von Dezimal zu Hexadezimal Methode toHex Java Basics - Anfänger-Themen 2
S Umrechner (Dezimal, Hexadezimal und Binär) Java Basics - Anfänger-Themen 3
E Hexadezimal in Dezimal Java Basics - Anfänger-Themen 25
U Dezimal zu Hexadezimal rekursive Funktion Java Basics - Anfänger-Themen 8
F dezimal zu hexadezimal Java Basics - Anfänger-Themen 14
N Umrechung Binär in Dezimal und Hexadezimal Java Basics - Anfänger-Themen 7
G Dezimal zu Hexadezimal Java Basics - Anfänger-Themen 2
M wie hexadezimal in dezimal wandeln? Java Basics - Anfänger-Themen 16
S dezimal od. hexadezimal Java Basics - Anfänger-Themen 3
M Binär zu Dezimal Java Basics - Anfänger-Themen 16
S Algorithmus (reelle Zahl <65536 von dezimal zu dual) max. 10 Nachkommastellen Java Basics - Anfänger-Themen 4
JD_1998 Vorgegebene Methode erweitern um Hex -> Dezimal umzuwandeln Java Basics - Anfänger-Themen 1
P Dezimal zu Hexadezimalzahl Funktion Java Basics - Anfänger-Themen 5
D Dezimal zu Dual mit Rückgabewert Java Basics - Anfänger-Themen 39
G Dezimal zu Binärcode Programm Java Basics - Anfänger-Themen 9
J Dezimal in Binär (Array) Java Basics - Anfänger-Themen 2
D Umrechnung dezimal -> oktal | signed/unsigned? Java Basics - Anfänger-Themen 1
L Dezimal- zu Binärsystem Java Basics - Anfänger-Themen 4
P 32 Bit Binärzahl Umwandeln in Dezimal Java Basics - Anfänger-Themen 8
D römische Zahlen in Dezimal ausgeben Java Basics - Anfänger-Themen 9
dave253 IEEE-Norm in Dezimal Java Basics - Anfänger-Themen 12
Z Dezimal > Binär-Umrechnung Logikfehler? Java Basics - Anfänger-Themen 8
K Erste Schritte Dezimal in binär Java Basics - Anfänger-Themen 17
S Umwandlung Binär in Dezimal (ohne array etc.) Java Basics - Anfänger-Themen 6
V Binär in Dezimal Java Basics - Anfänger-Themen 4
W Umwandeln von Dezimal in Dual - Ausgabe incl. Rechenschritte Java Basics - Anfänger-Themen 11
H Erste Schritte Uhrzeit anzeigen in Minuten Dezimal Java Basics - Anfänger-Themen 8
F Erste Schritte [GUI] Dual in Dezimal rechnen Java Basics - Anfänger-Themen 5
N Compiler-Fehler Dezimal to binary Java Basics - Anfänger-Themen 2
C Dezimal- und InputVerifier/FocusListener Probleme Java Basics - Anfänger-Themen 3
G Java Dezimal Zahlen Internazialisation Problem Java Basics - Anfänger-Themen 7
M Verständnisfrage zur Zahlenumwandlung (Dezimal-->Dual) Java Basics - Anfänger-Themen 25
C dezimal in binär Java Basics - Anfänger-Themen 3
M Binär -> Dezimal Java Basics - Anfänger-Themen 11
V Tool zum Umrechnen Dezimal in Hex Java Basics - Anfänger-Themen 7
B Dezimal Binär? Java Basics - Anfänger-Themen 10
B Dezimal --> Hex Java Basics - Anfänger-Themen 3
M String(Binärzahl) in Dezimal umwandeln Java Basics - Anfänger-Themen 4
S Dual in Dezimal umwandeln? Java Basics - Anfänger-Themen 24
R Unicode-Wert in Binär und Dezimal umformen - kleines Problem Java Basics - Anfänger-Themen 1
S Dezimal- in Hexadezimalzahl umwandeln Java Basics - Anfänger-Themen 4
C Hilfe bei Umrechnung von dezimal nach binär Java Basics - Anfänger-Themen 9
O Dezimal in Dual...Arraygröße & Runden Java Basics - Anfänger-Themen 4
X Dezimal/-Hexcode in lebares format umwandeln Java Basics - Anfänger-Themen 4
S Int zu Hexadezimal - Rekursive Methode Java Basics - Anfänger-Themen 2
M Erste Schritte boolean: ist Zahl Hexadezimal - Lösung verwirrend Java Basics - Anfänger-Themen 6
M hexadezimal in binär mit Hilfe von Shift-Operatoren Java Basics - Anfänger-Themen 6
Z Methoden Methode, die Ziffer aus Hexadezimal in Zehnerdezimal umrechnet Java Basics - Anfänger-Themen 5
Luk10 String (Hexadezimal) zu int parsen Java Basics - Anfänger-Themen 12
E Methoden umrechnung binär/oktal/hexadezimal in dezimalsystem (Methode) Java Basics - Anfänger-Themen 1
S Wie überprüfen das in Textfield nur Hexadezimal ist? Java Basics - Anfänger-Themen 4
M Hexadezimal Problem Java Basics - Anfänger-Themen 13
A Hexadezimal Java Basics - Anfänger-Themen 7
V Hexadezimal Zahlen addieren Java Basics - Anfänger-Themen 14
T Integer zu Hexadezimal konvertieren Java Basics - Anfänger-Themen 6
E Hexadezimal in double, int, char Java Basics - Anfänger-Themen 7
V Binär + Hexadezimal Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben