char(int)与int之间的差异

问题描述 投票:0回答:5

我有一段代码,它从传感器(通过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

可以看出,整数分裂。一段时间以来,我无法弄清楚?

有没有一种方法可以将控制台值保存为整数,因为将来我会使用此值。

java char int rxtx
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();

0
投票

不要将其转换为char。只需打印

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

0
投票

在第二个示例中,您将int转换为char,但是将其连接为字符串时,您看不到任何内容,因为这些是不可打印的字符。


0
投票

您的代码使用Java的UCS2表示将value数字转换为字符。仅当您要将值视为字符数据(例如字符串)时,才需要使用它。

如果只需要一个整数值(例如用于打印),则无需转换。


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");
© www.soinside.com 2019 - 2024. All rights reserved.