程序应该返回字符串中所有数字的总和。
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.对此有什么正确的正则表达式?
答案 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添加数字即可。我认为这里不需要模式。