java - NumberFormatException 错误(parseInt)

标签 java string integer numberformatexception

希望是一个非常简单的查询,但它让我摸不着头脑。

我有一个字符串,它只是一个整数,然后我试图将该整数作为 int 输出。从表面上看,这应该不是问题。

// this is how I create the string (it's the playload from a UDP datagram packet, 
// thought I don't think the origins hugely important - it's juts a test run so the
// stringMessage is always 1 (created by a seperate client process)

  ...
  recvSoc.receive(pac);
  String stringMessage = new String(pac.getData());
  port = pac.getPort();
  System.out.println("RECEIVED: " + stringMessage + " on port:  " + port);
  processMessage(stringMessage);
  ...

// Then in processMessage

public void processMessage(String data) {
  int message;
  message = Integer.parseInt(data);
  ...

这总是会因 NumberFormatException 错误而崩溃。我一生都无法弄清楚是什么原因造成的,非常感谢任何想法。我(最近)没有用 Java 编写太多代码,所以可能只是忘记了一些重要的或无关紧要的东西。

Exception in thread "main" java.lang.NumberFormatException: For input string: "1"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:481)
at java.lang.Integer.parseInt(Integer.java:514)
at udp.UDPServer.processMessage(UDPServer.java:85)
at udp.UDPServer.run(UDPServer.java:52)
at udp.UDPServer.main(UDPServer.java:156)

最佳答案

如果字符串确实是1,则不会发生异常。所以我会说字符串实际上不是 1

执行 data.toCharArray() 并打印每个字符的代码(转换为 int)。例如,结果可能是数字之前有一个隐藏字符。 (编辑:看来 iluxa 在我写答案时在评论中提到了这个选项)

在将其传递给 parseInt(..) 之前尝试 data = data.trim()

关于java - NumberFormatException 错误(parseInt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5267241/

相关文章:

java - 二维数组结构算法

r - 根据模式从字符串创建子串,并将模式保留在子串中

c++ - 提高指数移动平均整数乘法和除法的准确性

integer - 有符号 64 乘以 32 整数除法

ruby - 在 Ruby 中拆分一串具有不同数字大小的数字

java - 如何将 if/else if 代码中的整数转入该代码外部的整数? (java)

java - 有没有办法将服务器上的所有jsp文件一次性转换为静态页面?

java - JSON查询过滤传输

java - 在提交表单之前,有什么方法可以知道在调色板中选择了哪些值?

c# - 使用正则表达式忽略空字符串和空格