我需要将字符串十六进制值解析为Integer值。像这样:
String hex = "2A"; //The answer is 42
int intValue = Integer.parseInt(hex, 16);
但是当我插入一个不正确的十六进制值(例如“LL”)时,我得到java.lang.NumberFormatException: For input string: "LL"
我怎么能避免它(例如返回0)?
答案 0 :(得分:1)
将其包含在try catch块中。这就是Exception Handling的工作原理: -
int intValue = 0;
try {
intValue = Integer.parseInt(hex, 16);
} catch (NumberFormatException e) {
System.out.println("Invalid Hex Value");
// intValue will contain 0 only from the default value assignment.
}
答案 1 :(得分:1)
对于输入字符串:“LL”我如何避免它(例如返回0)?
抓住异常并将零分配给 intvalue
int intValue;
try {
String hex = "2A"; //The answer is 42
intValue = Integer.parseInt(hex, 16);
}
catch(NumberFormatException ex){
System.out.println("Wrong Input"); // just to be more expressive
invalue=0;
}
答案 2 :(得分:1)
您可以捕获异常并返回零。
public static int parseHexInt(String hex) {
try {
return Integer.parseInt(hex, 16);
} catch (NumberFormatException e) {
return 0;
}
}
但是,我建议您重新评估您的方法,因为0也是有效的十六进制数,并且不表示无效输入,例如"LL"
。
答案 3 :(得分:0)
我如何避免它(例如返回0)
使用一个简单的方法return 0
,以防NumberFormatException
出现
public int getHexValue(String hex){
int result = 0;
try {
result = Integer.parseInt(hex, 16);
} catch (NumberFormatException e) {
e.printStackTrace();
}
return result;
}
答案 4 :(得分:0)
抓住异常并设置默认值。但是,您需要在try
块之外声明变量。
int intValue;
try {
intValue = Integer.parseInt(hex, 16);
} catch (NumberFormatException e) {
intValue = 0;
}
如果需要使用初始化表达式设置值(例如,对于final
变量),则必须在方法中打包逻辑:
public int parseHex(String hex) {
try {
return Integer.parseInt(hex, 16);
} catch (NumberFormatException e) {
return 0;
}
}
// elsewhere...
final int intValue = parseHex(hex);