解法一:
public static void main(String[] args) {
//创建键盘录入
Scanner sc = new Scanner(System.in);
//输出提示语
System.out.println("请输入一个字符串");
//定义一个变量,用于接收求和结果
int count1 = 0;
String str1 = sc.nextLine();
//创建一个可变字符数组,用于接收字符数字
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str1.length(); i++) {
//确定指定的字符是否是数字
if ((str1.charAt(i)>='0'&&(str1.charAt(i)<='9'))) {
if (sb.length() > 0) {
//判断之前一个字符是否为数字
if ((str1.charAt(i-1)>='0'&&(str1.charAt(i-1)<='9')))
//如果为数字进行字符拼接
sb.append(str1.charAt(i));
//如果不为数字则加一个字符","在进行拼接
else {
sb.append("," + str1.charAt(i));
}
} else {
sb.append(str1.charAt(i));
}
}
}
//输出拼接后的字符数组
System.out.println(sb);
//将字符数组进行分割
String[] str2 = sb.toString().split(",");
//遍历数组
for (int i = 0; i < str2.length; i++) {
if (str2[i].length() > 0)
count1 += java.lang.Integer.parseInt(str2[i]);
}
//输出相加后的数值
System.out.println("相加后等于" + count1);
}
}
解法二:用正则表达式,程序健壮性更强,代码也简洁
//创建键盘录入
Scanner sc = new Scanner(System.in);
//输出提示语
System.out.println("请输入一个字符串");
//定义一个变量,用于接收求和结果
int count1 = 0;
String str1 = sc.nextLine();
//使用正则表达式将数组进行分割
String[] str2 = str1.split("\\D+");
//输出分割后的数组
System.out.println(Arrays.toString(str2));
//创建一个可变字符数组,用于接收字符数字
StringBuilder sb = new StringBuilder();
//遍历数组
for (int i = 0; i < str2.length; i++) {
//进行if判断跳过0索引
if (str2[i].length() > 0) {
//将数组后面的元素进行加操作
count1 += java.lang.Integer.parseInt(str2[i]);
//sb.append(str2[i]);
}
}
//输出相加后的数值
System.out.println("相加后等于" + count1);
}
}