java - 处理字符串到 Int 转换错误

标签 java string int processing data-conversion

我有一些简单的处理代码,它读取传入的串行数据,将其写入字符串,然后根据该字符串中包含的内容,将字符串转换为 int 或 char 并执行一些特定代码。

我的问题是,当我尝试将数据转换为整数时,它要么给我一个错误,要么给我一个零值( int(string) 返回零, Integer.parseInt(string) 返回错误)。以下是我的代码的相关部分。

String serialreadbuffer;
int t = 0;
boolean STimer = false;

// Serial Message Display (From Controller)
if (myPort.available() > 0) 
{  // Check if data is available
  serialreadbuffer = myPort.readStringUntil('\n');         // read it and write to variable
  if (serialreadbuffer.charAt(0) == 'I')
  {
    SerialText.setText("INITIALIZED");
    t = 0;
    STimer = true;
  }
  else if (serialreadbuffer.charAt(0) == 'U')
  {
    SerialText.setText("UPDATED");
    t = 0;
    STimer = true;
  }
  else if (serialreadbuffer.charAt(0) == 'D')
  {
    SerialText.setText("DISABLED");
    t = 0;
    STimer = true;
  }
  else if (serialreadbuffer.charAt(0) == 'E')
  {
    SerialText.setText("SERIAL COMMUNICATION ERROR");
    t = 0;
    STimer = true;
  }
  else
  {
    int numberbuffer = Integer.parseInt(serialreadbuffer) * 60 / 6144;
    serialreadbuffer = str(numberbuffer);
    RPMText.setText(serialreadbuffer);
  }
}

奇怪的是,如果我直接将字符串值分配给serialreadbuffer(即serialreadbuffer =“6144”),它将起作用,但如果我从串行端口获得相同的数字,则会出现以下错误:

NumberFormatException: For input string: "6144"

它给了我以下行的错误:

int numberbuffer = Integer.parseInt(serialreadbuffer) * 60 / 6144;

我在 string.equals() 比较方面也遇到了问题(即使字符串相同,它也总是返回 false),但是我通过将第一个字符转换为 char 并使用它进行比较来解决这个问题。不确定这是否与此问题有关。

我在互联网上搜索过,但没有找到有关此事的帮助。我不是一个经验丰富的程序员,所以也许这是我没有看到的显而易见的事情。非常感谢您的帮助。

最佳答案

在解析字符串之前修剪字符串

int numberbuffer = Integer.parseInt(serialreadbuffer) * 60 / 6144;

int numberbuffer = Integer.parseInt(serialreadbuffer.trim()) * 60 / 6144;

您可能有无法打印的字符,例如\r 在里面。

关于java - 处理字符串到 Int 转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27446097/

相关文章:

java - hibernate 4 中的 org.hibernate.validator.InvalidValue

java - gwt VerticalPanel foreach

c - 在 C 中将 2 个字符串相互匹配?

string - 打印 Int(或 Int 到 String)

java - 如何使用 Java API 在 Exchange Server 中获取 DL?

java - 内置 gradle 插件的版本号是多少?

c++ - 在 C++ 中拆分点上的字符串并从中提取所有字段?

c - 使用atoi检查字符串

iphone - 将字符串转换为 int-objective c

C Unsigned int 提供负值?