0

在我的 Java 程序中,我通过串口从我的 Arduino 接收到一个字符串。
字符串存储在变量 (string) 中:结果。

数据可能是什么示例:'w: 125'(总是 1 个字符、一个冒号和一个空格,带有来自我的 Arduino 的模拟值)

在我的代码中,我这样做:

int spacePos = result.indexOf(" "); // search where the space is
number= result.substring(spacePos+1); // take everything what comes behind the space
System.out.println(number); // print the value, example : 125
int number2 = Integer.parseInt(number);// this should convert the String 125 to a integer with value 125
System.out.println(number2);// should print a integer with value 125

带有子字符串的部分有效;我认为。当我打印数字时,我可以在 NetBeans 的输出屏幕中看到 125,但我可以选择几个空格???在我的号码后面。
但是当我打印 number2 时,我什么也没看到。

感谢您提供的任何帮助。谢谢。

4

3 回答 3

0

number= result.substring(spacePos+1);在数字后面有尾随空格。您需要删除空格,这会通过解析整数导致转换错误。示例使用

int spacePos = result.indexOf(" ");
String number = result.substring(spacePos+1);
number = number.trim();//removes trailing whitespace
int number2 = Integer.parseInt(number);
System.out.println(number2);
于 2013-02-12T16:30:54.237 回答
0

如果您可以选择数字前的空格,那么您在数字和数字之间有多个空格:。执行以下任一操作:

int spacePos = result.lastIndexOf(" ");

或者这样做:

int number2 = Integer.parseInt(number.trim());
于 2013-02-12T16:31:47.257 回答
0

传递给的字符串中似乎有额外的空格parseInt将导致无法到达aNumberFormatException和行。System.out.println(number2)如果你有一些看起来像的代码

try {
  /* ... */
} catch (Exception e) {
  /* do nothing */
}

它使您看不到运行时错误。

于 2013-02-12T16:32:33.693 回答