dezimal zu hexadezimal

Faighter

Mitglied
Guten Abend allerseits,

ich habe folgendes Problem, das folgende Programm soll Dezimal Zahlen von 0-255 nach der Eingabe in Hexadezimalzahlen umwandeln. Allerdings bekomme ich irgendwie nicht hin das die Zahlen wie z.B 1515 (kommt raus wenn 255 umgewandelt werden soll) in FF umgewandelt werden. Ich habe schon viel rumprobiert und komme leider euf keine vernünftige Lösung.

Erlaubt sind nur if und switch (und auch die Operatoren &;&&;|;||, allerdings glaube ich nicht die die bei diesem Programm einsetzbar sind.), da es sich um eine Aufgabe aus der Schule handelt.

Ich hoffe ihr könnt mir da weiterhelfen.


Java:
import java.util.Scanner;
	public class hexazahlen {

	/**
	 * @param args
	 */
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner tastatur;						//Scanner
		tastatur = new Scanner(System.in);		
		int dezimale;
		System.out.print("Bitte geben sie eine Zahl von 0-255 ein: ");
		dezimale=tastatur.nextInt();
		int restx = dezimale/16;			//Berechnung der Hexazahl 
		int reste = dezimale%16;			//Berechnung der Hexazahl 
			if(dezimale <10){
				System.out.print("Ihre Zahl ist im Hexadezimalsystem: " +dezimale);
			}
			else{
			 // if(dezimale >= 10) {  //reste vom ersten Versuch				  
				  switch (dezimale) 
				  {
                         case 10:
                         System.out.print("Ihre Zahl ist im Hexadezimalsystem: A");
                         break;
                         case 11:
                         System.out.print("Ihre Zahl ist im Hexadezimalsystem: B");
                         break;
                         case 12:
                         System.out.print("Ihre Zahl ist im Hexadezimalsystem: C");
                         break;
                         case 13:
                         System.out.print("Ihre Zahl ist im Hexadezimalsystem: D");
                         break;
                         case 14:
                         System.out.print("Ihre Zahl ist im Hexadezimalsystem: E");
                         break;
                         case 15:
                         System.out.print("Ihre Zahl ist im Hexadezimalsystem: F");
                         break;
                         default:
                         System.out.print("Ihre Zahl im Hexadezimalsystem ist:" +restx+reste); //Ausgabe der Zahlen > 15

				  
			  	}
			  }
			/*	  else   {
			  		System.out.print("Ihre Zahl im Hexadezimalsystem ist:" +restx+reste);   //reste vom ersten Versuch	
				  
                 
                         }	*/
	}
}
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
Allerdings bekomme ich irgendwie nicht hin das die Zahlen wie z.B 1515 in FF umgewandelt werden.
1515 ist nicht FF
15 = F
1515 = 5EB !

Schau dir mal Umrechnung von Zahlensystemen, bei angeklicktem "bei jeder Eingabe erklären" an,
Du musst eben IMMER bei dem Rest gucken ob der Größer= 10 ist und dann dein switch machen, nicht nur einmal...

Schleifen sind doch bestimmt auch erlaubt oder etwa nicht? =)
 

Faighter

Mitglied
:oops: Ich glaube ich habe in meinem Startpost was vergessen. Wir müssen nur den Zahlenbereich von 0-255 abdecken. Das 1515 kommt momentan noch raus wenn ich 255 umwandeln will, was ja eigentlich FF sein sollte.

Ich werde meinen Startpost dementsprechend ändern.

Schleifen sind tabu, ich weiß zwar so einigermaßen wie ich sie einsetzte, allerdings waren die Schleifen noch nicht Thema im Unterricht (wir haben erst seit diesem Schuljahr java).

mfg
 

Michael...

Top Contributor
Du musst restx und reste mit dem switch überprüfen nicht dezimale.

Man könnte das auch ohne switch lösen,
z.B. per ASCII Tabelle berechnen 'A' entspricht 65, usw.
z.B. per char - Array das man für die Ausgabe verwendet.
 

Faighter

Mitglied
Ich danke auch beiden für eure Hilfe.

Ich habe das Programm nun zum laufen gebracht und zwar nur mit if, switch und &.

Auch wenn ich bei der Ausgabe ein wenig tricksen musste ^^

mfg
 

Faighter

Mitglied
gerne.

Java:
/* Author: Faighter
 * Date: 13:11.2010
 */

import java.util.Scanner;
	public class hexazahlen {

	/**
	 * @param args
	 */
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner tastatur;						//Scanner
		tastatur = new Scanner(System.in);		
		int dezimale;
		System.out.print("Bitte geben sie eine Zahl von 0-255 ein: ");
		dezimale=tastatur.nextInt();
		int restx = dezimale/16;			//Berechnung der Hexazahl 
		int reste = dezimale%16;			//Berechnung der Hexazahl 
			if(dezimale <10){
				System.out.print("Ihre Zahl ist im Hexadezimalsystem: " +dezimale);
			}
			if(dezimale >9 & dezimale <16){
                switch (dezimale)
                {
                       case 10:
                       System.out.print("Ihre Zahl ist als Hexadezimale: A");
                       break;
                       case 11:
                       System.out.print("Ihre Zahl ist als Hexadezimale: B");
                       break;
                       case 12:
                       System.out.print("Ihre Zahl ist als Hexadezimale: C");
                       break;
                       case 13:
                       System.out.print("Ihre Zahl ist als Hexadezimale: D");
                       break;
                       case 14:
                       System.out.print("Ihre Zahl ist als Hexadezimale: E");
                       break;
                       case 15:
                       System.out.print("Ihre Zahl ist als Hexadezimale: F");
                }
			}
			if(dezimale >15){
               if(restx >9 & restx <16) {
            	   switch (restx)
                   {
                   case 10:
                       System.out.print("Ihre Zahl ist als Hexadezimale: A");
                       break;
                       case 11:
                       System.out.print("Ihre Zahl ist als Hexadezimale: B");
                       break;
                       case 12:
                       System.out.print("Ihre Zahl ist als Hexadezimale: C");
                       break;
                       case 13:
                       System.out.print("Ihre Zahl ist als Hexadezimale: D");
                       break;
                       case 14:
                       System.out.print("Ihre Zahl ist als Hexadezimale: E");
                       break;
                       case 15:
                       System.out.print("Ihre Zahl ist als Hexadezimale: F");
                   }
            	  
               }
               else{
            	System.out.print("Ihre Zahl ist im hexadezimalsystem: "+restx);   
            	   
               }
            	if(reste >9 & reste <16){
                    switch (reste)
                    {
                           case 10:
                           System.out.print("A"); 
                           break;
                           case 11:
                           System.out.print("B");
                           break;
                           case 12:
                           System.out.print("C");
                           break;
                           case 13:
                           System.out.print("D");
                           break;
                           case 14:
                           System.out.print("E");
                           break;
                           case 15:
                           System.out.print("F");
                    }
            	}
            	else{
                System.out.print(+reste);

            	}
			}
	}		
}
 
G

Gelöschtes Mitglied 20545

Gast
Mir persönlich gefällt das mit dem if nicht, drum hier noch ein anderer Ansatz: 4 Bits repräsentieren eine Stelle im Hexadezimalsystem, wenn man diese also zur dezimalen Zahl x umwandelt, kann man sich das Zeichen aus einem Array an Position x holen.

Java:
public class ToHexByBits {
	final String[] hexen = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
	public static void main(String[] args) {
		new ToHexByBits(44203);
	}
	
	public ToHexByBits(int source){
		System.out.println("RESULT: "+toHex(Integer.toBinaryString(source)));
	}
	
	//evtl. rekursiv durch die 32 bits
	public String toHex(String arg){
		return (arg.length()>4)? hexen[Integer.valueOf(arg.substring(0,4),2)]+toHex(arg.substring(4)) : hexen[Integer.valueOf(arg,2)];
	}
}
 
Zuletzt bearbeitet von einem Moderator:

c_sidi90

Top Contributor
oder z.B. so :

Java:
private void umwandelnHexadezimal(){
	
			String ergebnis ="";
			//Folgende Zeile ist für die Speicherung der Benutzereingabe
			//in meinem Beispiel ziehen wir die Eingabe aus einer Textfeld Komponente
			//und speichern diesen in einer Integer Variable zahl
			
			int zahl = Integer.parseInt(zahleneingabe.getText());
			
			//Prüfung der Zahlen 
			while (zahl > 0){
		
				if(zahl%16==10){
					ergebnis = ergebnis + "A";
					zahl = zahl/16;
				}
				if(zahl%16==11){
					ergebnis = ergebnis + "B";
					zahl = zahl/16;
				}
				if(zahl%16==12){
					ergebnis = ergebnis + "C";
					zahl = zahl/16;
				}
				if(zahl%16==13){
					ergebnis = ergebnis + "D";
					zahl = zahl/16;
				}
				if(zahl%16==14){
					ergebnis = ergebnis + "E";
					zahl = zahl/16;
				}
				if(zahl%16==15){
					ergebnis = ergebnis + "F";
					zahl = zahl/16;
				}
				
				if (zahl%16 <10){
					ergebnis = ergebnis + zahl%16;
				}
				
				zahl = zahl/16;
			}
				//Das ergebnis muss bei der Umwandlung ja Rückwerts ausgegeben werden
				//Deshalb wandeln wir den String mit .reverse() um.
				ergebnis = new StringBuffer(ergebnis).reverse().toString();
				
				System.out.println(ergebnis);
	}
 

ARadauer

Top Contributor
if(zahl%16==13){
ergebnis = ergebnis + "D";
zahl = zahl/16;
}
if(zahl%16==14){
ergebnis = ergebnis + "E";
zahl = zahl/16;
}
if(zahl%16==15){
ergebnis = ergebnis + "F";
zahl = zahl/16;
}
ok, ich hab mir das jetzt nicht alles durchgelesen, aber ich muss leider sagen, dass wenn man sowas sieht, es meist unflexibel ist... sowas kann man eigentlich immer mit arrays vereinfachen.

Hexadezimal ist ja einfach nur ein Zahlensystem mit der Basis 16... hab da mal was geschrieben in der man jedes Zahlensystem in ein andres umwandeln kann.. vielleicht hilft das

Java:
public class AlienNumbers {

   public static void main(String[] args)  {
     System.out.println(convert("101", "01", "0123456789")); // das ist binär nach dezimal
     System.out.println(convert("15", "0123456789", "0123456789ABCDEF")); //dezimal nach hexadezimal
     System.out.println(convert("215", "0123456789", "0123456789ABCDEF"));
     System.out.println(convert("215", "01234567", "0123456789ABCDEF")); //okal nach hexadezimal
     System.out.println(convert("1112", "0123456789", "BierSaufen;-)")); //dezimal nach biersaufenimal ;-)   
   }

   public static String convert(String value, String sourceLang, String targetLang){
      int dez = parseToDezimal(sourceLang, value);
      return writeToLanguage(targetLang, dez);
   }

   public static int parseToDezimal(String sourcelang, String value){
      int pot = sourcelang.length();
      int result = 0;

      for(int i = 0; i <value.length(); i++){
         char c = value.charAt(value.length()- i-1);
         int v = sourcelang.indexOf(c);
         int r = (int) (v * Math.pow(pot, i));
         result += r;
      }
      return result;
   }

   public static String writeToLanguage(String targetLang, int dezimalValue){
      int pot = targetLang.length();
      StringBuilder result = new StringBuilder();

      while(dezimalValue!=0){
         int v = dezimalValue %pot;
         dezimalValue = dezimalValue/pot;

         result.append(targetLang.charAt(v));
      }

      return result.reverse().toString();
   }

}
 

c_sidi90

Top Contributor
Da hast du recht, aber es erfüllt den Zweck der Aufgabe. Bietet die API nicht auch schon Methoden zur Umwandlung von Zahlen?

Habs jetzt nur auf die schnelle geschrieben, müsste aber funktionieren.

Mfg
 
B

bone2

Gast
Java:
System.out.println(Integer.toString(255, 16));
obwohl ich bezweifel, das das das ist was der lehrer sehen will^^
 

Faighter

Mitglied
Ich danke euch für die vielen verschiedenen Lösungsansätze. Ich werde mir wohl noch ein paar dieser Lösungsvorschläge noch näher anschauen.

mfg
 
Ä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
F Erste Schritte Dezimal in Hexadezimal Java Basics - Anfänger-Themen 5
E Hexadezimal in Dezimal Java Basics - Anfänger-Themen 25
U Dezimal zu Hexadezimal rekursive Funktion Java Basics - Anfänger-Themen 8
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