2013-01-08 100 views
0

我有一段代碼,它接收來自傳感器的值(通過使用rxtx的串口)並顯示它。奇怪的是,下面的代碼java中char(int)和int的區別

int value = in.read(); 
System.out.print((char) value); 

輸出所需的值爲:

RXTX Warning: Removing stale lock file. /var/lock/LK.005.018.009 
20 
27 
29 
26 
21 

但是,當我更改上面的代碼如下:

int value = in.read(); 
System.out.print("The value is"+(char) value); 

輸出成爲:

RXTX Warning: Removing stale lock file. /var/lock/LK.005.018.009 
The value is2The value is6The value is 
The value is2The value is2The value is 

可以看出,整數分裂。相當長一段時間,我無法弄清楚它?

有沒有一種方法可以將控制檯值保存爲一個整數,因爲我將來會使用這個值。任何幫助真的很感激。

+0

寬鬆的'(焦炭)'投檢查這個片段。 –

回答

2

如可以看出,整分裂。相當長一段時間,我無法弄清楚它?

您不讀取整數,您正在讀取字符編碼爲ASCII的字節?

是否有方法可以將控制檯值保存爲整數,因爲我將來會使用此值。任何幫助真的很感激。

最簡單的方法是使用掃描儀

Scanner scanner = new Scanner(in); 
while (scanner.hasNextInt()) { 
    // read bytes up the next whitespace, parse as a int 
    int n = scanner.nextInt(); 
+0

我試過使用掃描儀。我試着將上面的代碼合併爲:while(scanner.hasNextInt())//將字節讀入下一個空白處,解析爲int int n = scanner.nextInt(); System.out。println(「整數值是」+ n); }'我得到的輸出是:'2整數值是1 1整數值是9' – Spaniard89

+1

非常感謝,這很有幫助。我在你的代碼中嘗試了一些修改。並得到它的工作。 – Spaniard89

+0

爲什麼在單詞「整數」之前得到一個數字? –

0

不要將它轉換爲字符。只是打印

System.out.print("The value is " + value); 
+1

我試過了,但是當我這樣做的時候,我會收到一些隨意的價值。我對傳感器進行了編程,以便每10秒傳輸一次光照值。但是,當我只是將它打印出來時,每10秒我就會得到超過4-5個這樣的值:'值爲50的值爲51的值爲10的值爲50' – Spaniard89

0

在要轉換INT爲char第二個例子,但是當你把它串聯字符串你看不到任何東西,因爲這些都是非打印字符。

0

您的代碼使用Java的UCS2表示將value數字轉換爲字符。只有當您想將該值作爲字符數據(例如字符串)處理時,您才需要它。

如果您只需要它作爲整數值(例如打印),則不需要轉換。

+0

我試圖不將它鑄成字符,但我沒有得到適當的輸出。 – Spaniard89

+0

好的,我從接受的答案中可以看出,您的主要問題是如何從輸入通道讀取數據。這樣,該主題的標題有點誤導。 – gaborsch

0

請在採用以代碼

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String line = br.readLine(); 
    String[] words = line.split("[ ]",0); //white space delimiter 
    for(int i = 0; i < words.length; i++) { 
    System.out.print("The value is " +words[i]); 
    System.out.print("\n"); 
相關問題