So vergleichen Sie ein Zeichen aus einer Zeichenfolge mit einer anderen Zeichenfolge [duplizieren]

Mögliche Duplikate:
Wie vergleiche ich Strings in Java?

Ich bin ziemlich neu in Java und in der Praxis versuche ich, einen Hexadezimal-zu-Dezimal-Konverter zu erstellen, da es mir gelungen ist, einen Binär-zu-Dezimal-Konverter zu erstellen.

Das Problem, das ich habe, ist im Grunde ein gegebenes Zeichen in einem String mit einem anderen String zu vergleichen. So definiere ich das aktuelle Zeichen, das verglichen werden soll:

String current = String.valueOf(hex.charAt(i));

So versuche ich den Charakter zu vergleichen:

else if (current == "b") 
   dec += 10 * (int)Math.pow(16, power);

Wenn ich versuche, den Code auszuführen, indem ich nur Zahlen eingebe, z. 12, es funktioniert, aber wenn ich versuche, ein 'b' zu verwenden, erhalte ich einen seltsamen Fehler. Hier ist das gesamte Ergebnis der Ausführung des Programms:

run:
Hello! Please enter a hexadecimal number.
2b
For input string: "b" // this is the weird error I don't understand
BUILD SUCCESSFUL (total time: 1 second)

Hier ist ein Beispiel für die erfolgreiche Ausführung des Programms mit nur einer Zahlenkonvertierung:

run:
Hello! Please enter a hexadecimal number.
22
22 in decimal: 34 // works fine
BUILD SUCCESSFUL (total time: 3 seconds)

Jede Hilfe dabei wäre dankbar, danke.

Bearbeiten: Ich denke, es wird nützlich sein, wenn ich die gesamte Methode hier setze.

Edit 2: Gelöst! Ich weiß nicht, wem ich antworten soll, weil sie alle so gut und hilfsbereit waren. So widersprüchlich.

for (int i = hex.length() - 1; i >= 0; i--) {
        String lowercaseHex = hex.toLowerCase();
        char currentChar = lowercaseHex.charAt(i);

        // if numbers, multiply them by 16^current power
        if (currentChar == '0' || 
                currentChar == '1' || 
                currentChar == '2' || 
                currentChar == '3' || 
                currentChar == '4' || 
                currentChar == '5' || 
                currentChar == '6' || 
                currentChar == '7' || 
                currentChar == '8' || 
                currentChar == '9')
            // turn each number into a string then an integer, then multiply it by
            // 16 to the current power.
            dec += Integer.valueOf(String.valueOf((currentChar))) * (int)Math.pow(16, power);

        // check for letters and multiply their values by 16^current power
        else if (currentChar == 'a') 
            dec += 10 * (int)Math.pow(16, power);
        else if (currentChar == 'b') 
            dec += 11 * (int)Math.pow(16, power);
        else if (currentChar == 'c') 
            dec += 12 * (int)Math.pow(16, power);
        else if (currentChar == 'd') 
            dec += 13 * (int)Math.pow(16, power);
        else if (currentChar == 'e') 
            dec += 14 * (int)Math.pow(16, power);
        else if (currentChar == 'f') 
            dec += 15 * (int)Math.pow(16, power);
        else
            return 0;
        power++; // increment the power
    }

    return dec; // return decimal form
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage