如果字符串是这样声明的,那么效果很好
String str="179,206";
String [] numbers = str.split(",");
int[] ints = new int[numbers.length];
for(int i = 0;i < numbers.length;i++)
{
ints[i] = Integer.parseInt(numbers[i]);
}
当我使用下面的代码
读取来自com com端口的相同字符串时serialPort.openPort();//Open serial port
serialPort.setParams(9600, 8, 1, 0);//Set params.
byte[] buffer = serialPort.readBytes(8);//Read 8 bytes from serial port
String str = new String(buffer);
然后使用前面的代码转换为整数。然后它给出了以下错误 线程&#34; main&#34;中的例外情况
java.lang.NumberFormatException
:对于输入字符串:&#34; 179&#34;
在java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
在java.lang.Integer.parseInt(Integer.java:481)
在java.lang.Integer.parseInt(Integer.java:527)
在simpleread.SimpleRead.main(SimpleRead.java:44)
答案 0 :(得分:6)
最简单的解决方法是使用trim()
删除前导/尾随空白:
ints[i] = Integer.parseInt(numbers[i].trim());
但更好的解决方案是在拆分过程中删除空格:
String [] numbers = str.trim().split(" *, *");
这会修剪整个字符串,并且拆分正则表达式会占用逗号两边的任何空格,这意味着您可以在代码中安全地使用这些数字,而无需在使用前记住它们trim()
,这就是为什么我更喜欢这种方法。