关于将com com端口字符串转换为整数数组

时间:2014-12-15 04:53:12

标签: java string

如果字符串是这样声明的,那么效果很好

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)

1 个答案:

答案 0 :(得分:6)

最简单的解决方法是使用trim()删除前导/尾随空白:

ints[i] = Integer.parseInt(numbers[i].trim());

但更好的解决方案是在拆分过程中删除空格:

String [] numbers = str.trim().split(" *, *");

这会修剪整个字符串,并且拆分正则表达式会占用逗号两边的任何空格,这意味着您可以在代码中安全地使用这些数字,而无需在使用前记住它们trim(),这就是为什么我更喜欢这种方法。