当我运行以下Java代码时:
public void run(){
String stringPacketData=null;
try {
stringPacketData = new String(clientPacketData,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
System.exit(1);
}
String[] splitString=stringPacketData.split("@");
this.clientID = Integer.parseInt(splitString[0]);
String op="";
op=splitString[1];
if(op.equalsIgnoreCase("popola_cache")){
popolamentoCache(Integer.parseInt(splitString[2]));
}
else{
System.exit(0);
}
} 其中stringPacketData的格式为: idClient@operationType@dimCache,它将抛出以下异常:
Exception in thread "Thread-2" java.lang.NumberFormatException: For input string: "5"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at UDPSocketBased.WorkerUDP.run(WorkerUDP.java:53)popolamentoCache(Integer.parseInt(splitString2));对应的WorkerUDP.java:53语句
我不明白为什么我的输入字符串"5“的格式不正确。
发布于 2015-04-16 03:26:50
首先,您需要在解析字符串之前对其进行修剪
this.clientID = Integer.parseInt(splitString[0].trim());发布于 2015-04-16 19:38:20
我这样解决它:
popolamentoCache(Integer.parseInt(String.valueOf(splitString[2].charAt(0))));问题是我收到了一个名为“pkt”的DatagramPacket:
byte[] buffer=new byte[65508];
DatagramPacket pkt = new DatagramPacket(buffer, buffer.length);因此,当我使用以下命令获取数据包数据时:
clientPacketData=pkt.getData();它考虑有效载荷长度为65508字节,与stringPacketData长度相同。
谢谢!
发布于 2015-08-28 02:35:15
尝试在文本文件的开头放置一个分隔符,与用于拆分字符串的分隔符相同。这样就避免了第一个字符抛出异常的情况,因为它不是整数。
https://stackoverflow.com/questions/29648012
复制相似问题