NumberFormatException异常问题,求解释。

rispa_yang 2012-06-10 06:17:39
String msg=“INFO1:172.16.228.244:40.0:40.0”;
StringTokenizer st=new StringTokenizer(msg,":"); //分解字符串
String keyword=st.nextToken();
String ipAddress=st.nextToken();//取得对方IP
String x = st.nextToken();
String y = st.nextToken();

int m= (int)(Integer.parseInt(x));
int n=(int)(Integer.parseInt(y));
System.out.println(m); error指向这一行。
System.out.println(n);
int px =m/3+1;
int py = n/4+1;

错误是这样的,我实在想不通呀!!
Exception in thread "Thread-3" java.lang.NumberFormatException: For input string: "40.0"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at FiveChess.ChessClient$Listen.run(ChessClient.java:306)



...全文
3628 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
curbstone119 2012-06-11
  • 打赏
  • 举报
回复
明显是double的,先转double,再转int
sffx123 2012-06-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
可能是因为20.0是浮点数的原因吧,换成Double.paresDouble()试试
[/Quote]+1,如果想要int就用得到的double强转成int类型。
jlu_lamp_lamp 2012-06-11
  • 打赏
  • 举报
回复
正常的浮点数还是用Double吧
不要用其它了
会出问题的
大坨-童鞋 2012-06-10
  • 打赏
  • 举报
回复
1,2楼可以哦。我试过了
周靖峰 2012-06-10
  • 打赏
  • 举报
回复
可能是因为20.0是浮点数的原因吧,换成Double.paresDouble()试试
淡定的峰哥 2012-06-10
  • 打赏
  • 举报
回复
Integer.parseInt方法里面的字符串只能包含数字和正负号,正负号若有必须是第一位
你可以用
String s = "40.0";
double d = Double.parseDouble(s);
int i =(int)d;

62,614

社区成员

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

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