做法一:
public void getNumSubstrSum(String str){
char s[]=str.toCharArray();
int sum=0;
for(int i=1;i<s.length;i++){
int cur=s[i]-'0';
int next;
if(i==s.length-1){
next=10;
}else {
next = s[i + 1] - '0';
}
if(cur<=9&&cur>=0&&(next>9||next<0)){
System.out.println(s[i-1]+"--"+s[i]);
int j=i;
int k=1;
int res=0;
boolean sign=true;
while (s[j]=='-'||(s[j]-'0'<=9&&s[j]-'0'>=0)){
System.out.print(s[j]);
if(s[j]=='-'){
sign=!sign;
}else{
int num=s[j]-'0';
num=num*k;
res+=num;
k*=10;
}
j--;
}
System.out.println();
res= sign==true ?res:res*-1;
sum+=res;
}
}
System.out.println(sum);
}
做法二:
public void getNumSubstrSum2(String str){
char s[]=str.toCharArray();
int sum=0;
int num=0;
int k=1;
boolean sign=true;
for(int i=s.length-1;i>=0;i--){
int cur=s[i]-'0';
if(cur<=9&&cur>=0){
num+=cur*k;
k*=10;
}else if(s[i]=='-'){
sign=!sign;
}else{
sum+=num*(sign==true?1:-1);
num=0;
k=1;
sign=true;
}
}
System.out.println(sum);
}
做法三:
package com.lyf.String;
/**
* Created by fangjiejie on 2017/5/13.
*/
public class NumberSum {
public static int getSum(String str){
if(str==null){
return 0;
}
int sum=0;
boolean sign=true;//判断正负号
int num=0;//一个完整的数字
char []s=str.toCharArray();
int cur;
for(int i=0;i<s.length;i++){
cur=s[i]-'0';
if(cur<0||cur>9){
sum+=num;
num=0;
if(s[i]=='-'){
if(i-1>=0&&s[i-1]=='-'){
sign=!sign;
}else{
sign=false;
}
}else {
sign=true;
}
}else {
num = num * 10 + cur * (sign ? 1 : -1);
}
}
sum+=num;
return sum;
}
public static void main(String[] args) {
System.out.println(getSum("A1CD2E33"));
System.out.println(getSum("A-1B--2C-D6E"));
}
}