我是做工程的,没学过Java,现在用的一个软件是用Java语言写的,碰到一个小小的二次开发的问题:提取一个字符串(都是T8*250*10*100这种形式的)中的数值型字符,将其转换为数字,再求它们的和(最后的结果是368)。请问这个问题如何用一个输入参数是字符串"T8*250*10*100",并返回计算结果的方法来实现。请热心的朋友给一个完整的代码。非常感谢!

解决方案 »

  1.   

    首先提醒楼主要记得结贴…… 
    如果你这里面只有整数,没有小数的话String s="T8*250*10*100";
                 String[] ints=s.split("[\\D]+");             int sum=0;
                 for(String ss:ints){
                     System.out.println("parse:"+ss);
                     if(ss.matches("[\\d]+")){
                         System.out.println("--");
                         sum+=Integer.parseInt(ss);
                     }
    //                 sum+=Integer.parseInt(ss);
                 }
                  System.out.println(sum);
      

  2.   

    其实我把问题简化了一下,我最终想实现的目的如下面所示:float offset(String section)
    {
       int H,W,t;
       float area,static_moment;
       
       String[] size = section.split("[\\d]+");
       H = Integer.parseInt(size[1]);
       W = Integer.parseInt(size[2]);
       t = Integer.parseInt(size[3]);
       area = (H-t)*t + W*t;
       static_moment = (H-t)*t*(H-t)/2.0 + W*t*(H-t/2.0);
       return static_moment/area;
    }但是当我用out=offset("L140*90*10")调用的时候提示说Interpreted Exception,请大家帮我看看问题出在哪里。拜谢!
      

  3.   

    做工程的都能看懂java 伤心哇 提醒结贴 
      

  4.   

    你没有认真看我给你回的帖子,正则表达是[\\D]+ 你把大写改成了小写,所以出错同时你现在这种写法有几个潜在的问题字符串的模式必须是固定的"L140*90*10" 如果换成 120W*90*45就有问题
    还有area可能计算为0,不是很清楚你的字符串模式,下面这个肯定可以了float offset(String section)
        {
           int H,W,t;
           float area,static_moment;       String[] size = section.split("[\\D]+");
           for(int i=1;i<=3;i++){
              System.out.println(size[i]);
           }
           H = Integer.parseInt(size[1]);
           W = Integer.parseInt(size[2]);
           t = Integer.parseInt(size[3]);
           area = (H-t)*t + W*t;
           static_moment = (float) ((H-t)*t*(H-t)/2.0 + W*t*(H-t/2.0));
            if(area==0){
                return -1;
            }
           return static_moment/area;
        }
      

  5.   

    感谢ioe_gaoyong的帮助,问题已解决。
    输入字符串都是"L125*80*8"或者"T8*250*10*100"的形式,不会出现"120W*90*45"这种形式。
    我自己写的代码的问题应该出现在正则表达式和除法上,根据ioe_gaoyong的代码修改后便没有报错。