可能重复:
如何在Java中比较字符串?
我是相当新的Java和实践,我试图创建一个十六进制到十进制数转换器,因为我已经成功地设法使一个二进制到十进制转换器。
我遇到的问题与另一个字符串字符串基本上是比较给定的人物。 这是我如何定义当前的字符被比较:
String current = String.valueOf(hex.charAt(i));
这是我尝试比较字符:
else if (current == "b")
dec += 10 * (int)Math.pow(16, power);
当我尝试通过输入刚刚运行的代码编号,例如12,它的工作原理,但是当我尝试使用“B”,我得到一个奇怪的错误。 下面是运行程序的全部结果:
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)
下面是成功地只是一个数字转换运行程序的例子:
run:
Hello! Please enter a hexadecimal number.
22
22 in decimal: 34 // works fine
BUILD SUCCESSFUL (total time: 3 seconds)
任何帮助,这将不胜感激,谢谢。
编辑:我想如果我把整个方法这里将是有益的。
编辑2:解决了! 我不知道是谁的答案是因为他们都这么好,乐于助人,我应该接受,虽然。 所以冲突。
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
}