处理字符串到Int转换错误

时间:2014-12-12 14:46:46

标签: java string int processing data-conversion

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

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

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并使用它进行比较来解决这个问题。不确定这是否与此问题有关。

我已经浏览过互联网,并没有找到任何帮助。我不是一个经验丰富的程序员,所以也许它显而易见,我只是没有看到。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

在解析int而不是

之前修剪String
int numberbuffer = Integer.parseInt(serialreadbuffer) * 60 / 6144;

DO

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

你可能有不可打印的字符,例如\ r \ n吧。

答案 1 :(得分:0)

价值可能有一些空间。尝试在转换前修剪字符串。

Serialreadbuffer.trim()