java数组问题

山城忙碌人 2010-09-26 11:41:08
String str = "zzz_15922784484_1285462612919_1269306315876" 这是我接口接收到的数据。

程序
if (str != null && str.startsWith("zzz_")){
String sub[] = str.split("_");
String strId = sub[2];
long longDecideSmsId = java.lang.Long.parseLong(strId)//为什么这里是乱码呢?
}

这是我记录的异常:java.lang.NumberFormatException: For input string: "∞"//为什么数组里的第二个元素成∞了呢。在线等,急。。。。。
...全文
246 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssn777 2010-09-27
  • 打赏
  • 举报
回复
要找问题先得看看你的strId是什么,有可能你的日志有问题呢,先确定传进来的值是否正确再找别的原因。在你的代码中加入输出打印看看。
String strId = sub[2];
System.out.println("*******************");
System.out.println("str is : "+str );
System.out.println("strId is : "+strId );
System.out.println("*******************");
蒙奇D路飞 2010-09-27
  • 打赏
  • 举报
回复
我也不知道 关注一下
山城忙碌人 2010-09-27
  • 打赏
  • 举报
回复
这是一个比较奇怪的现象。偶尔会出现问题,大多数情况不会出现问题,这里不会出现并发,因为只有一个客户端在访问。代码如下
int stloReceivedSms = 0;
int stloSendedSms = 0;
int result = -1;
String content = request.getString("content");//返回内容
String remotePhone = request.getString("remotePhone");
try{
if (content != null && content.startsWith("zzz_")) {
String subCount[] = content.split("_");
String strDecideSmsId = subCount[2].trim();// 批次

//出问题的地方
long longDecideSmsId = java.lang.Long.parseLong(strDecideSmsId);// 通过测试短信返回的内容里得到的短信批次.
log.error("content:" + content + ",strDecideSmsId:"+ strDecideSmsId + ",longDecideSmsId:"+ longDecideSmsId);

if (longDecideSmsId > 0) {
String sql = "select a from test1 where b = " + longDecideSmsId;
String sql1 = "select b from test2 where a = " + longDecideSmsId;
stloReceivedSms = this.getStloReceivedSms(db, sql1);//这里的异常在getStloReceivedSms()方法里处理的。不会抛出来
stloSendedSms = this.getStloReceivedSms(db, sql);
int stloReSms = stloReceivedSms + 1;
//这里只是算一个数字,应该不出异常,因为传过去的参数也是合法的。。
double arrival = this.arrival(longDecideSmsId, java.lang.Double.parseDouble("" + stloSendedSms), java.lang.Double.parseDouble("" + stloReSms));
if (stloSendedSms > stloReceivedSms) {
String updateCimSQL = "update test3 set aaa = stloReceivedSms + 1 , bbb = ddd + ' "
+ remotePhone + "' where ccc = ?";
String arrivalSql = "update test4 set aaa = ? where bbb = ?";
try{
int upSTnum = db.executeUpdate(updateCimSQL,new Object[]{longDecideSmsId});
int arrNum = db.executeUpdate(arrivalSql,new Object[]{arrival,longDecideSmsId});
if(upSTnum>0&&arrNum>0){
result = 0;
falg = true;
}
} catch (Exception e) {
result = 0;
CimUtils.errorLog("",
"抵达率执行事务出现异常:" + e.toString(), updateCimSQL
+ "~~~~" + arrivalSql,
"PostRecvSms");
} finally {
}
} else {
result = 0;
}
} else {
result = 0;
}
} else {
result = 0;
}
}catch (Exception e) {
CimUtils.errorLog("", "抵达率出现异常:"+e.toString(), content, "PostRecvSms")//异常是这里出现的。;
}
chenbb110 2010-09-27
  • 打赏
  • 举报
回复
你先打印str,在打印sub【2】看看是什么
山城忙碌人 2010-09-27
  • 打赏
  • 举报
回复
但是我接收到的没有汉字啊。。。。全是数字和字母
kk4219 2010-09-27
  • 打赏
  • 举报
回复
不明白,我也成功跑下来了..没有错误...
soli11722984 2010-09-26
  • 打赏
  • 举报
回复
难道你本地和服务器上的JRE不一样?
山城忙碌人 2010-09-26
  • 打赏
  • 举报
回复
请各位看下这句话:
java.lang.NumberFormatException: For input string: "∞"

我不明白的是我接收到的字符串是:zzz_15922784484_1285462612919_1269306315876
程序把第二个元素认为是"∞"了。
这是JDK对这个异常的解释。
当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。

如果第二个元素存在空格或者其它不合法的信息。哪么也不应该显示出这个啊!"∞"
山城忙碌人 2010-09-26
  • 打赏
  • 举报
回复
wanglihongzhoujielun
你提出的编码问题指的是什么?

cnmb1 2010-09-26
  • 打赏
  • 举报
回复
那你debug一下,或打印一下,看看第二个到底是什么东西。
山城忙碌人 2010-09-26
  • 打赏
  • 举报
回复
我在本地都没问题。但服务器上就出问题烦死了。
  • 打赏
  • 举报
回复
我在机器上运行没有乱码问题,是MyEclipse编码问题吧?
liujun822 2010-09-26
  • 打赏
  • 举报
回复
lz没错啊,你是不是搞错了,我已经运行成功了,答案1285462612919
soli11722984 2010-09-26
  • 打赏
  • 举报
回复
够了够了。。。。。已经第3篇了
山城忙碌人 2010-09-26
  • 打赏
  • 举报
回复
String str = "zzz_15922784484_1285462612919_1269306315876" 这是客户返回的字符串

long longDecideSmsId = java.lang.Long.parseLong(strId)//这里转换出现异常

java.lang.NumberFormatException: For input string: "∞"

人都风了。。。
airelisa 2010-09-26
  • 打赏
  • 举报
回复
String sub[] = str.split("_");

String[] sub = str.split("_");
airelisa 2010-09-26
  • 打赏
  • 举报
回复
你是说strId是乱码还是longDecideSmsId?
ruilongshun 2010-09-26
  • 打赏
  • 举报
回复
strId=new String(strId.getBytes("ISO-8859-1"),"gb2312");
该下你的字体编码 或许 是编码格式不正确 多试几次你的编码格式 如果你不知道你的String str = "zzz_15922784484_1285462612919_1269306315876" 这是我接口接收到的数据。的格式 还有你的eclipse的格式
山城忙碌人 2010-09-26
  • 打赏
  • 举报
回复
记录日期 id:
记录日期原因:出现异常:java.lang.NumberFormatException: For input string: "∞"
记录日期sql:zzz_15213080390_1285481391900_1273540870409
记录日期时间:2010-09-26 17:15:03.783
记录接口名字:XXXXX


这是服务器日志记录问题。。。
strive_bo 2010-09-26
  • 打赏
  • 举报
回复
#7楼 得分:0回复于:2010-09-26 12:43:21我在本地都没问题。但服务器上就出问题烦死了。


肯定服务器上传给你的值有问题。。。
加载更多回复(12)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧