0

センサー(rxtxを使用したシリアルポート経由)から値を受け取り、それを表示するコードがあります。不思議なことに、次のコード

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

ご覧のとおり、整数は分割されます。かなり長い間、私はそれを理解することができませんか?

将来この値を使用するので、コンソール値を整数に保存する方法はありますか?

4

5 に答える 5

2

ご覧のとおり、整数は分割されます。かなり長い間、私はそれを理解することができませんか?

整数を読み取っていません。文字が「ASCII」としてエンコードされているバイトを読み取っています。

将来この値を使用するので、コンソール値を整数に保存する方法はありますか?

最も簡単な方法は、スキャナーを使用することです

Scanner scanner = new Scanner(in);
while (scanner.hasNextInt()) {
   // read bytes up the next whitespace, parse as a int
   int n = scanner.nextInt();
于 2013-01-08T10:14:06.973 に答える
0

2番目の例では、intをcharに変換していますが、文字列に連結すると、これらは印刷できない文字であるため、何も表示されません。

于 2013-01-08T10:14:13.927 に答える
0

char にキャストしないでください。印刷するだけ

System.out.print("The value is " + value);
于 2013-01-08T10:10:27.790 に答える
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");
于 2013-01-08T11:39:35.150 に答える
0

コードはvalue、Java の UCS2 表現を使用して数値を文字に変換しました。値を文字データ (例: String) として扱いたい場合にのみ必要になる場合があります。

整数値としてのみ必要な場合 (印刷など)、変換する必要はありません。

于 2013-01-08T10:16:44.917 に答える