mok*_*oka 2 java string hex decimal
可能重复:
如何比较Java中的字符串?
我是Java的新手并且练习我正在尝试创建十六进制到十进制数转换器,因为我已经成功地设法生成二进制到十进制转换器.
我遇到的问题基本上是将String中的给定字符与另一个字符串进行比较.这就是我如何定义要比较的当前字符:
String current = String.valueOf(hex.charAt(i));
Run Code Online (Sandbox Code Playgroud)
这是我尝试比较角色的方式:
else if (current == "b")
dec += 10 * (int)Math.pow(16, power);
Run Code Online (Sandbox Code Playgroud)
当我尝试通过仅输入数字(例如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 Code Online (Sandbox Code Playgroud)
以下是仅使用数字转换成功运行程序的示例:
run:
Hello! Please enter a hexadecimal number.
22
22 in decimal: 34 // works fine
BUILD SUCCESSFUL (total time: 3 seconds)
Run Code Online (Sandbox Code Playgroud)
任何有关这方面的帮助将不胜感激,谢谢.
编辑:我认为如果我把整个方法放在这里会很有用.
编辑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
}
Run Code Online (Sandbox Code Playgroud)
尝试将char初始化为char返回的值charAt()
char current = hex.charAt(i);
Run Code Online (Sandbox Code Playgroud)
然后在你的条件使用文字字符:
else if (current == 'b')
Run Code Online (Sandbox Code Playgroud)
由于char是原始的,您可以使用==运算符进行比较.在前面的代码中,您正在比较一个String使用==,因为a String是一个Object代码正在检查它们是否相同,Object如果它们具有与String.equals()方法相同的值.
| 归档时间: |
|
| 查看次数: |
70253 次 |
| 最近记录: |