【问题标题】:Difference between char (int) and intchar (int) 和 int 的区别
【发布时间】:2013-01-08 10:08:07
【问题描述】:

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

可以看出,整数分裂了。搞了半天,搞不明白?

有没有办法可以将控制台值保存为整数,因为我将来会使用这个值。

【问题讨论】:

  • 松开(char) 演员表。

标签: java char int rxtx


【解决方案1】:

可以看出,整数分裂了。搞了半天,搞不明白?

您不是在读取整数,而是在读取字符编码为 ?ASCII 的字节?

有没有办法可以将控制台值保存为整数,因为我将来会使用这个值?

最简单的方法是使用扫描仪

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

【讨论】:

  • 我尝试使用扫描仪。我尝试将您的上述代码合并如下:while (scanner.hasNextInt()) { // read bytes up the next whitespace, parse as a int int n = scanner.nextInt(); System.out.println("integer value is"+n); } 我得到的输出是:2integer value is1 1integer value is9
  • 非常感谢,很有帮助。我尝试对您的代码进行一些修改。并让它工作。
  • 为什么在“integer”前面有一个数字?
  • 我对传感器进行了编程,使其每 10 秒发送一次值。而且我认为传感器会一一传递值。在上面的输出中,首先发送 1,然后再发送 9。在输出画面上显示为 19。所以在上面的代码中,一旦传输了一个数字,就会立即调用扫描仪。我尝试每 5 秒调用一次扫描仪部件。所以现在它就像魅力一样工作:)
【解决方案2】:

不要将其转换为字符。打印出来

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

【讨论】:

  • 我试过了,但是当我这样做时,我得到了一些随机的不想要的值。我已经对我的传感器进行了编程,使其每 10 秒传输一次光值。但是当我按原样打印出来时,每 10 秒我会得到超过 4-5 个这样的值:The value is50The value is51The value is10The value is50
【解决方案3】:

在第二个示例中,您将 int 转换为 char,但是当您将其连接到 string 时,您什么也看不到,因为这些是不可打印的字符。

【讨论】:

    【解决方案4】:

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

    如果您只需要它作为整数值(例如用于打印),则不需要转换。

    【讨论】:

    • 我尝试不将其转换为 char,但没有得到适当的输出。
    • 好的,我可以从接受的答案中看出您的主要问题是如何从输入通道读取数据。这样主题的标题就有点误导了。
    【解决方案5】:

    请通过采用您的代码检查此 sn-p

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-05
      • 2014-09-10
      • 2020-07-10
      • 2010-12-08
      • 2016-09-11
      • 1970-01-01
      • 2016-05-23
      相关资源
      最近更新 更多