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)  
 
     

解决方案 »

  1.   

    Integer.parseInt方法里面的字符串只能包含数字和正负号,正负号若有必须是第一位
    你可以用
    String s = "40.0";
    double d = Double.parseDouble(s);
    int i =(int)d;
      

  2.   

    可能是因为20.0是浮点数的原因吧,换成Double.paresDouble()试试
      

  3.   

    正常的浮点数还是用Double吧
    不要用其它了
    会出问题的
      

  4.   

    +1,如果想要int就用得到的double强转成int类型。
      

  5.   

    明显是double的,先转double,再转int