从字符串中获取总计数

时间:2016-04-21 11:50:29

标签: java arrays

我有一个字符串“经济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);

2 个答案:

答案 0 :(得分:1)

您的大部分代码都是正确的。只需在此行中添加条件:

sum = sum + Integer.parseInt(num);

并将其更改为:

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

答案 1 :(得分:0)

假设你只需要考虑数字&lt; 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);