我有一段代码,它从传感器接收值(使用rxtx通过serialport)并显示它。奇怪的是,以下代码
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();
答案 1 :(得分:0)
不要将其投射到char。只需打印
System.out.print("The value is " + value);
答案 2 :(得分:0)
在第二个示例中,您将int转换为char,但是当您将其连接到字符串时,您看不到任何内容,因为这些是不可打印的字符。
答案 3 :(得分:0)
您的代码使用Java的UCS2表示将value
数字转换为字符。仅当您希望将值视为字符数据(例如字符串)时,才可能需要它。
如果只需要它作为整数值(例如用于打印),则无需转换。
答案 4 :(得分: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");