You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:44:45