von*_*rro 19 java hex type-conversion
我写了一些代码将我的十六进制显示字符串转换为十进制整数.但是,当输入类似于100a或625b(带字母的东西)时,我得到如下错误:
java.lang.NumberFormatException:对于java.lang.Integer.parseInt(未知来源)的java.lang.NumberFormatException.forInputString(未知来源)的输入字符串:"100a"
你知道如何将我的字符串转换成十进制整数吗?
if(display.getText() != null)
{
if(display.getText().contains("a") || display.getText().contains("b") ||
display.getText().contains("c") || display.getText().contains("d") ||
display.getText().contains("e") ||display.getText().contains("f"))
{
temp1 = Integer.parseInt(display.getText(), 16);
temp1 = (double) temp1;
}
else
{
temp1 = Double.parseDouble(String.valueOf(display.getText()));
}
}
Run Code Online (Sandbox Code Playgroud)
ajb*_*ajb 49
看起来你的字符串中有一个额外的空格字符.您可以使用trim()删除前导和尾随空格:
temp1 = Integer.parseInt(display.getText().trim(), 16 );
Run Code Online (Sandbox Code Playgroud)
或者,如果您认为空格的存在意味着其他错误,您将不得不自己查看,因为我们没有其余的代码.
Ale*_*dro 16
public static int hex2decimal(String s) {
String digits = "0123456789ABCDEF";
s = s.toUpperCase();
int val = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
int d = digits.indexOf(c);
val = 16*val + d;
}
return val;
}
Run Code Online (Sandbox Code Playgroud)
这是我在互联网上找到的最有效和最优雅的解决方案.这里提供的其他一些解决方案并不总是对我有用.
| 归档时间: |
|
| 查看次数: |
117394 次 |
| 最近记录: |