返回所有整数的总和

时间:2015-05-11 22:33:58

标签: java

程序应该返回字符串中所有数字的总和。

public static void main(String[] args) {
    String data = "1a2b-3c";
    data=data.replaceAll("[\\D]+"," ");
    String[] numbers=data.split(" ");
    int sum = 0;
    for(int i=0;i<numbers.length;i++){
        try{
            sum+=Integer.parseInt(numbers[i]);
        }
        catch( Exception e ) {
          e.printStackTrace();
        }
    }
    System.out.println("The sum is:"+sum);

}

因此对于上面的输入,它应该将sum返回为0 ==&gt; (1+2 - 3)

但我的上面的代码返回6.对此有什么正确的正则表达式?

3 个答案:

答案 0 :(得分:1)

这是你应该怎么做的

String data = "1a2b-3c";
int sum=0;
Pattern p = Pattern.compile("-?\\d+");
Matcher m = p.matcher(data);
while (m.find()) {
  sum+=Integer.parseInt(m.group());
}

答案 1 :(得分:0)

一种简单的方法就是这样做。

 if(numbers[i - 1].equals('-')){
           sum-=Integer.parseInt(numbers[i]);
 } else 
   sum+=Integer.parseInt(numbers[i]);

答案 2 :(得分:-1)

在String上使用拆分工具,将每个符号分别拆分成一个数组,然后只需用parseInt添加数字即可。我认为这里不需要模式。