0

私の Java プログラムでは、シリアル ポートで Arduino から文字列を受け取ります。
文字列は変数 (string) : result に格納されます。

データの例: '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これにより、NumberFormatExceptionSystem.out.println(number2)に到達しません。次のようなコードがある場合

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

実行時エラーが表示されないようにしています。

于 2013-02-12T16:32:33.693 に答える