2016-04-21 49 views
-3

我有一个字符串“经济1床,类型452,液晶4特大号床,11大号床”。 从上面的字符串中,我要求得到1 + 4 = 5的计数。 如果给定字符串中的数字大于10,则忽略要添加的数字(因此忽略452和11)。 任何人都可以为此写逻辑?从字符串获取总数

String a="Economy Double , 1 queen bed 42 lcd"; 
int sum = 0; 
String num = ""; 
for(int i = 0; i < a.length(); i++) { 
    if(Character.isDigit(a.charAt(i))) { 
     num = num + a.charAt(i); 
    } else { 
     if(!num.equals("")) { 
      sum = sum + Integer.parseInt(num); 
      num = ""; 
     } 
    } 
} 
System.out.println(sum); 
+0

份额你已经尝试了什么,我们 – sidgate

+1

不会为你做这一点,但我们一定能帮助你 - 怎么样你认为要解决这个问题吗? – duduamar

+1

本网站不是代码编写服务。尝试自己解决问题,并在遇到特定问题时再回来。 –

回答

0

假设你只需要考虑数字< 10,那么这应该这样做(快速和肮脏和缓慢):

String a = "1 Economy 1 bed, type 452, lcd 4 king bed , 11 queen bed 2"; 
    int sum = 0; 

    for(int i = 0; i < a.length(); i++) { 
     char currChar = a.charAt(i); 
     if(Character.isDigit(currChar)) { 
     if(i -1 >= 0 && i+1 < a.length() && !Character.isDigit(a.charAt(i+1)) && !Character.isDigit(a.charAt(i-1))){ 
      sum += Character.getNumericValue(currChar); 
     }else if(i+1 >= a.length() && !Character.isDigit(a.charAt(i-1))){ 
      sum += Character.getNumericValue(currChar); 
     }else if(i == 0 && !Character.isDigit(a.charAt(i+1))){ 
      sum += Character.getNumericValue(currChar); 
     } 
     } 
    } 
    System.out.println(sum); 
+0

除了不在乎数字> 10. –

+0

是的,但他只想考虑数字<10? – eol

+0

这是添加所有数字。我想添加小于10的数字。 – yogesh

1

大部分代码是正确的。只需添加条件在这一行:

sum = sum + Integer.parseInt(num); 

并将其更改为:

sum += (Integer.parseInt(num)<10 ? Integer.parseInt(num) : 0);