日期:2014-05-20  浏览次数:20823 次

NumberFormatException异常问题,求解释。
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)  
 




------解决方案--------------------
Integer.parseInt方法里面的字符串只能包含数字和正负号,正负号若有必须是第一位
你可以用
String s = "40.0";
double d = Double.parseDouble(s);
int i =(int)d;
------解决方案--------------------
可能是因为20.0是浮点数的原因吧,换成Double.paresDouble()试试
------解决方案--------------------
1,2楼可以哦。我试过了
------解决方案--------------------
正常的浮点数还是用Double吧
不要用其它了
会出问题的
------解决方案--------------------
探讨
可能是因为20.0是浮点数的原因吧,换成Double.paresDouble()试试