我从蓝牙接收数据作为字节数组,我可以将其转换为字符数组,如果我在TextView
中显示数据,数据将正确显示但是当我尝试运行将迭代的函数时通过我的字节数组中的所有空格,当涉及NumberFormatException捕获的/u0000
(又名NULL?)字符时,它会被捕获,但是在catch代码运行后它会崩溃。对我来说典型的byte[]
看起来像{'1','2','\u0000','\u0000'}
,而且代表通过蓝牙发送的数字12。
我的想法是让代码检查int值然后捕获异常,如果它不可解析或继续运行,如果是。然后,这将设置布尔值,并且调用函数将接收该字符是否是有效的int。
这是我的代码:
private boolean checkForInt(char c) {
boolean isInt;
try {
Integer.parseInt(c + "");
isInt = true;
} catch (NumberFormatException e){
isInt = false;
}
return isInt;
}
答案 0 :(得分:1)
您可以在char c上使用Character.isDigit(char)。
答案 1 :(得分:0)
如果遇到NULL-terminator字符的问题,当迭代字节数组时检查i th 字符是否为NUL,如果是,则不要尝试解析它...