题目
输入一行字符(个数<=100)查找其中的数字字符,输出数字字符组成的字符之和。数字之和可能组成2位或2位以上的数字。
例如:输入a11b22c3 输出 36
分析
对于一组序列 a11b22c3
设置一个截取开始位index
如果遇到数字 截取位标记index,如上述序列中遇到数字1其下标为1,将index 设置为 1 ,当下一次遇到字母的时候就是b ,对b的下标和index中间的数字截取出来即可。最后进行边界检测。
Java实现
public static void test07(){
Scanner sc = new Scanner(System.in);
String s = sc.next();
int index = 0,sum = 0;
boolean flag = false;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) < '0' || s.charAt(i) > '9') {
if (flag) {
sum += Integer.valueOf(s.substring(index,i));
flag = false;
}
}else {
if (!flag) {
flag = true;
index = i;
}
}
}
if (flag) sum += Integer.valueOf(s.substring(index,s.length()));
System.out.println(sum);
}