java.lang.NumberFormatException:对于输入字符串:"9813023219"

kyu*_*uen 0 java string processing

我正在使用串行事件将从arduino读取的rfid标签传递给处理.在串行事件中,我正在解析并将变量转换为整数.这大部分工作,只有一张rfid卡一直在抛出错误.

void serialEvent(Serial thisPort)
{
  String inString = thisPort.readString();
  if(inString != null)
  {
    Serial connect1 = (Serial) connections.get(0);
      if(thisPort == connect1 )
      {
        Chair chair = (Chair) chairs.get(0);
        if(inString.contains("UID Value:"))
        {
          int p2 = inString.indexOf(":");
          String pString = inString.substring(p2+1); 
          String pString2 = pString.substring (0,10);
          //println(pString2);
          pString2.trim();

          println("String length: " + pString2.length());

          chair.setRFID(pString2);
          println(pString2);
        }

      }
  }
}

void setRFID(String r)
  {  
     try{
       this.rfid = Integer.parseInt(r);
     }
     catch (Exception e) {
      e.printStackTrace();
     }

     //set position of person to chair
     for (Person person : people)  
     { 

        //println(this.rfid != chair.rfid);
        //println(this.rfid + "," +  "person: " + person.ID + "," + person.RFID);
        if(this.rfid == person.RFID)
        {
          person.setPos(this.pos);
          this.personID = person.ID;
        }
     }
  }
Run Code Online (Sandbox Code Playgroud)

try-catch不起作用,这一行导致问题this.rfid = Integer.parseInt(r);. 我认为它可能是一个格式错误的字符串,但字符串似乎没问题.这里检查字符串一致性的结果:字符串长度:10 1811524219字符串长度:10 1942302231字符串长度:10 1010368230字符串长度:10 9813023219

hmj*_*mjd 6

9813023219是无效的,Integer因为它大于Integer.MAX_VALUE,是2147483647.使用Long相反,谁的MAX_VALUE9223372036854775807.