2013-02-12 73 views
0

在我的Java程序中,我通過串口從我的Arduino接收到一個字符串。
該字符串存儲在變量(字符串):結果中。整數到字符串問題

什麼樣的數據可以是一個例子:「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時,我什麼都看不到。

您可能提供的任何幫助表示讚賞。謝謝。

+0

它拋出任何異常嗎? – PermGenError 2013-02-12 16:26:58

+3

try number.trim() – BobTheBuilder 2013-02-12 16:28:12

+0

'number'的長度是多少?是否在'125「後有一些意想不到的字符會拋棄分析器?你可以在解析之前修剪字符串嗎? – Floris 2013-02-12 16:29:18

回答

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); 
0

如果你可以在號碼前選擇的空間,那麼你有:與數字之間的一個以上的空間。請執行此:

int spacePos = result.lastIndexOf(" "); 

還是做到這一點:

int number2 = Integer.parseInt(number.trim()); 
+0

dammit,trim()做了訣竅。感謝名單 – user1868409 2013-02-12 16:36:53

0

有字符串中的多餘空格傳遞給parseInt這將導致一個NumberFormatException和線路System.out.println(number2)不會達到這很可能。如果你有一些代碼看起來像

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

它讓你看不到運行時錯誤。