Java hexa

L

learnjav

Gast
hei zusammen ich habe ein Problem, nämlich ich muss eine dezimal Zahl in eine Hexadezimal zahl umwandeln. Mein Problem jetzt, ich muss den String noch umgekehrt ausgeben und 0x0 dazu schreiben vor der ausgabe versteht sich... leider printet es mir logerischerweise bei jeder iteration einmal "0x0" durch.. Ich Bedanke mich schon jetzt für eure Hilfe

Code:
public class hex {
  public static void main(String[] args){
    int a = Integer.parseInt(args[0]);
    int x=0;
    StringBuilder umgekehrt = new StringBuilder(x);
    String s = new String();

while(a >= 1){

  x = a % 16;
  a = a/16;

  //umgekehrt.append(x);

  if (x == 10) {
      s = "A";
      System.out.print("A");
    }
  else if (x == 11) {
       s = "B";
     System.out.print("B");
    }
  else if (x == 12) {
      s = "C";
      System.out.print("C");
    }
  else if (x == 13) {
      s = "D";
      System.out.print("D");
    }
  else if (x == 14) {
      s ="E";
      System.out.print("E");
    }

  else if (x == 15) {
      s ="F";
      System.out.print("F");
      }
  else {
      System.out.print(x);
        }

     }
 }
}
 
Zuletzt bearbeitet von einem Moderator:
Bitte setz den Programmcode in die entsprechenden "Code" Tags. Macht das Ganze lesbarer.
Davon abgesehen steht die Mühe bei der Formulierung des Posts in direkter Relationen zur Anzahl hilfreicher Antworten ;)
Ergänzung ()

Schau dir doch mal in der StringBuilder Klasse die Methode "insert" an. Damit solltest du definitiv weiterkommen!
 
Zuletzt bearbeitet:
Code:
public class hex {
	public static void main(String[] args){
		int a = Integer.parseInt(args[0]);
		int x=0;
		String s = "";

		while(a >= 1){

			x = a % 16;
			a = a/16;

			if (x == 10) {
				s = "A" + s;
			}
			else if (x == 11) {
				s = "B" + s;
			}
			else if (x == 12) {
				s = "C" + s;
			}
			else if (x == 13) {
				s = "D" + s;
			}
			else if (x == 14) {
				s ="E" + s;
			}
			else if (x == 15) {
				s ="F" + s;
			}
			else {
				s= String.valueOf(x) + s;
			}

		}
		s = "0x0" + s;
                System.out.println("Dez: " + a " Hex: " + s);
	}
}

ungetestet und ja wir haben die Lösung nicht zusammen erarbeitet, aber es half mir beim Prokrastinieren :D und natürlich kann man auch diesen Code noch weiter verbessern...
 
Zuletzt bearbeitet:
Oh wow ich danke dir vielmals!!! Auf der 36 Zeile fehlt noch ein + oder? :D
Ergänzung ()

nun ja, wir dürfen keine Fertigen java methoden benutzen... die Eleganteste wäre natürlich toHexString..., aber leider Verboten :(
 
Was ich bei meinem ersten Post vergessen habe: Willkommen im Forum!

Außerdem, ohne jemanden verschrecken zu wollen, möchte ich hierauf aufmerksam machen: Haus- und Übungsaufgaben

Besonders wichtig hierbei ist wirklich, dass ihr selbst ehrlich versucht habt, eine Lösung zu finden. Beschreibt, was ihr bereits versucht habt, wieso es nicht funktioniert hat und was ihr eventuell erreichen wollt, ohne aber zu wissen, wie ihr da hinkommt. Dann helfen euch die Jungs und Mädels hier um Forum wirklich sehr gerne weiter.

In diesem Thread hier hätte ich mir zum Beispiel etwas wie folgt gewünscht:

Hallo, ich habe ein Problem mit meinem Programm.
Ich möchte eine Dezimalzahl zu Fuß in eine Hexadezimalzahl umrechnen und ausgeben lassen.
Das funktioniert soweit auch, nur dass meine Ausgabe verkehrt rum ist, weil ja alles nacheinander in die Konsole geschrieben wird.
Mir ist nicht so ganz klar, wie ich es schaffe, "das letzte zuerst" auszugeben, wenn ihr versteht was ich meine ^^


Gute Nacht ;)
 
ja das + fehlt :D
hoffe, dass du dir genau anschaust was passiert und vergleichst was ich geändert habe. dann lernst du auch etwas ;-)
Ergänzung ()

Hier mal noch eine Version, die ohne die ganzen if-Kaskaden auskommt.
@TE ist dir klar was in Zeile 13 passiert?

Code:
public class hex {
        public static void main(String[] args){
                int a = Integer.parseInt(args[0]);
                int x=0;
                String s = "";

                while(a >= 1){

                        x = a % 16;
                        a = a/16;

                        if (x >= 10) {
                                char c = (char) (Integer.valueOf('A') - 10 + x);
                                s = c + s;
                        }
                        else {
                                s = x + s;
                        }

                }
                s = "0x0" + s;
                System.out.println("Dez: " + a + " Hex: " + s);
        }
}
 
Zuletzt bearbeitet:
Zurück
Oben