Wie kann ich einem Buchstaben einen Zahlenwert zuweisen?

Maxpower123

Mitglied
Hi,

ich möchte Hexadezimalzahlen in Dezimalzahlen umrechnen, aber dafür müsste ich ja beispielsweise einem eingegebenen "a" den Wert 10 zuweisen können, damit ich damit rechnen kann. Wie mache ich das?

G
 

Gucky

Top Contributor
Dann bräuchtest du auch so eine Abfrage, wenn aaaaa eingegeben wird.
Mach es doch so, dass du über den String iterierst. Die erste Zahl nimmst du mit eins mal. Die zweite mit 15, die dritte mit 15*15 und so weiter.
Natürlich musst du dann auf die richtige Eingabe testen und Groß- und Kleinschreibung behandeln.
 

Maxpower123

Mitglied
Ein character lässt sich doch gar nicht über die Scanner-Klasse einlesen, oder? Und String lässt sich nicht zu einem Integer casten.
Außerdem kann ich die eingegebene Zahl nicht nach Einer, Zehner und Hunderter usw. aufteilen, wenn in ihr Buchstaben enthalten sind, die keinem Wert zugewiesen worden sind.
 
Zuletzt bearbeitet:

Maxpower123

Mitglied
Hier sollte jetzt beispielsweise 10 und nicht a ausgegeben werden.

Java:
char hexa = Terminal.readChar();
        int hexanumber = hexa;
        
        if (hexa == a) {
            hexanumber = hexanumber + 10;
        }

        System.out.println(hexa);
 
Zuletzt bearbeitet von einem Moderator:

JavaMeister

Gesperrter Benutzer
Sorry, dann musst du das auch hinschreiben. Da steht, dass hexa ausgegeben werden soll. Und genau das passiert.

Du musst schon ein wenig mitdenken, sonst dauert das hier ewig.
 

Maxpower123

Mitglied
Gut, dann schreib ich das so:

Java:
char hexa = Terminal.readChar();
        int hexanumber = hexa;

        if (hexa == a) {
        hexanumber = hexanumber + 10;
        }

        System.out.println(hexanumber);

Funktioniert aber immer noch nicht.
 
Zuletzt bearbeitet von einem Moderator:

JavaMeister

Gesperrter Benutzer
Klar funktioniert das nicht, weil a nicht definiert ist.. Du meinst vermutlich 'a'

int hexanumber = hexa;

und char zu int, erhälst du den ascii Code für diese zahl. Das möchtest du nicht, denn dann wäre das 97. Ich glaube nicht, dass du das willst.
 
Zuletzt bearbeitet:

Maxpower123

Mitglied
Java:
int hexa = Terminal.readChar();
        

        if (hexa == 'a') {
            int hexanumber = hexa;
            hexanumber = hexanumber - 87;
            System.out.println(hexanumber);
        } else if (hexa == 'b') {
            int hexanumber = hexa;
            hexanumber = hexanumber - 87;
        } else if (hexa == 'c') {
            int hexanumber = hexa;
            hexanumber = hexanumber - 87;
        } else if (hexa == 'd') {
            int hexanumber = hexa;
            hexanumber = hexanumber - 87;
        } else if (hexa == 'e') {
            int hexanumber = hexa;
            hexanumber = hexanumber - 87;
        } else if (hexa == 'f') {
            int hexanumber = hexa;
            hexanumber = hexanumber - 87;
        }
 
Zuletzt bearbeitet von einem Moderator:

JavaMeister

Gesperrter Benutzer
Sehr kreativ... Aber noch nich 100 % brauchbar, da deine hexanumber nun nicht mehr außen sichbar sind.

Und statt der Umrechnung von ascii nach hex wert, könnte man den hexwert direkt hinschreiben.
 
Zuletzt bearbeitet:

JavaMeister

Gesperrter Benutzer
Java:
int hexa = Terminal.readChar();
int hexanumber = 0;

if (hexa == 'a') {

hexanumber = 10;
}


System.out.println(hexanumber);
 
Zuletzt bearbeitet:

Maxpower123

Mitglied
Wenn ich jetzt aber a und b gemeinsam eingebe, erhalte ich nur a. Wie kann ich beide Fälle überprüfen?

Java:
public static void calculatedeci() {

        int hexa = Terminal.readChar();
        int hexanumbera = 0;
        int hexanumberb = 0;
        
        if (hexa == 'a')
            hexanumbera = 10;
        if (hexa == 'b')
            hexanumberb = 11;
        
        
        System.out.println(hexanumbera+hexanumberb);
 
Zuletzt bearbeitet von einem Moderator:

Maxpower123

Mitglied
Das funktioniert irgendwie nicht ...

Java:
int hexa = Terminal.readChar();
        int hexanumbera = 0;
        int hexanumberb = 0;

        int i = 10;

        while (i <= 15) {
            if (hexa == 'a')
                hexanumbera = i;
            else if (hexa == 'b')
                hexanumberb = i;
            }
            
            i++;
 
Zuletzt bearbeitet von einem Moderator:

Maxpower123

Mitglied
Warum kann ich das nicht so schreiben?

Java:
if (hexa == 'a' || 'b')
        while (i <= 15) {
            
                hexanumbera = i;
                i++;
                hexanumberb = i;
                i++;
                hexanumberc = i;
                i++;
                hexanumberd = i;
                i++;
                hexanumbere = i;
                i++;
                hexanumberf = i;
                }
 
Zuletzt bearbeitet von einem Moderator:

Gucky

Top Contributor
@maxpower
Du hast überhaupt keine Eigeninitiative gezeigt und dann verliehrt man irgendwann die Lust. Zudem ist dein Problem schon tausendfach im Internet gelöst worden. Gib einfach bei Google hex zu int ein und du wirst erschlagen von Ergebnissen.
 

Neue Themen


Oben