当前位置: 首页 > 面试题库 >

NumberFormatException错误(parseInt)

吉凯捷
2023-03-14
问题内容

希望这是一个非常简单的查询,但这让我挠头。

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

// 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)

问题答案:

注意,DatagramPackate.getData()返回
整个缓冲区

您收到的数据只是其中的一部分:

接收的数据或要发送的数据从offset缓冲区中的开始,并且运行length很长时间。

因此,要将数据转换为,String您应该使用以下构造函数:

String message = new String(pac.getData(), pac.getOffset(), pac.getLength(), "UTF-8");

请注意,我在此处指定UTF-8编码,因为未指定编码将导致使用平台默认编码,这通常不是您想要的。



 类似资料:
  • 问题内容: 代码是: 而logcat错误是: 03-18 03:19:07.847:E / AndroidRuntime(875):由以下原因引起:java.lang.NumberFormatException:无效的float:“” 问题答案: 好像editText2中的String为空,因此无法将其解析为float。 一种可能的解决方案是先检查String是否为空,然后确定默认值,另一种方法是

  • 我在运行时遇到一个错误。使用if语句检查是否为空时会导致此错误。

  • 我正在创建一个每日保存日志。创建时,我得到了这个NumberFormatException,我需要一些帮助来完成这个项目。 这是我正在研究的代码。 和错误消息: 线程“AWT-EventQueue-0”Java.lang.NumberFormatException.forInputString(NumberFormatException.Java.base:68)在Java.base/Java.l

  • 我有运行Spark2(V2.2)的Hortonworks HDP 2.6.3。我的测试用例非常简单: > 使用一些随机值创建配置单元表。端口10000上的配置单元 在10016打开Spark Thrift服务器 null 我有一个错误: 我怀疑它与列有关,所以我更改为:df.select(“desc”).show() 然后我得到了这个奇怪的结果: 由于某种原因,它返回了列名?! 案例2 直线: 显

  • 问题内容: 我在Android应用中运行了以下代码 在Android 5.0(Lollipop)中,它 没有 引发任何整数异常。但是在Android 4.4.x (KitKat)和更低版本中,它抛出: NumberFormatException:无效的Int:“ +91” Android版本如何造成这种差异? 问题答案: 在此提交中添加了对显式的支持: 从开始包含在内。如果您已获取Git存储库,则