如何使用Java计算指定字符串中passed、failed、skipped的数值总和?
嘿,我来给你几个实用的Java实现方案,轻松搞定从这个字符串里提取对应数值并求和的需求:
方法1:字符串分割法(直观易懂)
这种方法适合格式固定的字符串,步骤清晰明了:
- 先把原字符串按空格分割成单个的键值对(比如
"passed=20") - 遍历每个键值对,再按
=分割,取出数值部分 - 将数值转为整数后,分别记录对应键的值并累加求和
代码示例:
public class TestScoreCalculator { public static void main(String[] args) { String str = "passed=20 failed=15 skipped=10"; int total = 0; int passed = 0, failed = 0, skipped = 0; // 按空格分割成独立的键值对数组 String[] keyValuePairs = str.split(" "); for (String pair : keyValuePairs) { // 按=分割键和数值部分 String[] parts = pair.split("="); int value = Integer.parseInt(parts[1]); // 根据键赋值对应变量 switch (parts[0]) { case "passed": passed = value; break; case "failed": failed = value; break; case "skipped": skipped = value; break; } total += value; } // 输出结果 System.out.println("passed对应的数值:" + passed); System.out.println("failed对应的数值:" + failed); System.out.println("skipped对应的数值:" + skipped); System.out.println("三者总和:" + total); } }
方法2:正则表达式法(灵活通用)
如果字符串的格式可能有变化(比如键的顺序调整、存在多余空格),用正则表达式匹配会更稳妥,它能精准定位目标键值对:
import java.util.regex.Matcher; import java.util.regex.Pattern; public class TestScoreCalculatorRegex { public static void main(String[] args) { String str = "passed=20 failed=15 skipped=10"; int total = 0; int passed = 0, failed = 0, skipped = 0; // 匹配目标键值对的正则:捕获键(passed/failed/skipped)和对应的数字 Pattern pattern = Pattern.compile("(passed|failed|skipped)=(\\d+)"); Matcher matcher = pattern.matcher(str); while (matcher.find()) { String key = matcher.group(1); int value = Integer.parseInt(matcher.group(2)); // 赋值对应变量并累加总和 switch (key) { case "passed": passed = value; break; case "failed": failed = value; break; case "skipped": skipped = value; break; } total += value; } // 输出结果 System.out.println("passed对应的数值:" + passed); System.out.println("failed对应的数值:" + failed); System.out.println("skipped对应的数值:" + skipped); System.out.println("三者总和:" + total); } }
两种方法都能得到正确结果:passed=20、failed=15、skipped=10,总和为45。第一种适合格式固定的场景,代码简洁;第二种更适配格式灵活的情况,容错性更强。
内容的提问来源于stack exchange,提问作者Koushic
相关产品推荐
相关产品推荐

