我需要从预设字符串中提取字符。我知道方法string.charAt()
,我使用它但它崩溃了我的程序。我使用的上下文如下:
private String values = "0123456789ABCDEFG";
//Converts a 10 base number to a q base
private String t2q(String number, String base) {
String a = Double.toString((int)(Double.parseDouble(number) / Double.parseDouble(base)));
String b = Double.toString((int)(Double.parseDouble(number) % Double.parseDouble(base)));
StringBuilder converted = new StringBuilder(a + b);
if (!check_base(converted.toString(), base)) {
return t2q(a, base) + values.charAt(Integer.parseInt(b));
}
char ab = values.charAt(Integer.parseInt(a));
char ba = values.charAt(Integer.parseInt(b));
return "" + ab + ba;
}
一开始我认为我的程序崩溃是因为a
采用Double
格式,例如1.0
所以我使用的函数转换1.0
1
但没有,它仍然崩溃。我也尝试使用Character
代替char
,但它没有任何区别。
对于示例number = "11011"
和base = 16
,异常错误为“java.lang.NumberFormatException:Invalid int:”1.0“”,因此11011
}中的16
为{{1} }}
答案 0 :(得分:0)
您无法使用Integer.parseInt()解析表示Double的String。
这不起作用:
Integer.parseInt("3.0");
这将有效:
Integer.parseInt("3");
请改用:
new Double("3.0").intValue()
但请考虑以下行为:
new Double("2.5").intValue()
将返回2.