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