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

Java4环境下不使用List实现逗号分隔行号的存储与打印

Java4环境下需求实现方案

因为Java 1.4不支持泛型集合,且你环境限制不能使用List,我们可以直接用StringBuffer拼接符合条件的行号(注:StringBuilder是JDK1.5才新增的类,Java4环境不可用),省去后续集合转字符串的步骤,实现逻辑如下:

前置注意事项

  • 你现有代码中amount是String类型,不能直接和数字0做比较,需要先转为数值类型(根据业务场景选int或者double即可)
  • 业务层面用户看到的行号从1开始计数,所以循环下标i要加1再存储

完整实现代码

// 初始化StringBuffer存储符合条件的行号
StringBuffer validItemNos = new StringBuffer();
for (int i = 0; i < totalNoOfRows; i++) {
    String amountStr = "动态取值,例如100";
    double amount = 0d;
    // 先把字符串金额转成数值,处理格式异常
    try {
        amount = Double.parseDouble(amountStr);
    } catch (NumberFormatException e) {
        // 金额格式错误的业务处理,可根据需求调整
        continue;
    }
    if(amount > 0) {
        // 已经有值的话先加逗号分隔
        if(validItemNos.length() > 0) {
            validItemNos.append(",");
        }
        // 行号从1开始,所以i+1
        validItemNos.append(i + 1);
    }
}

// 拼接提示语
String alertMsg = "";
if(validItemNos.length() > 0) {
    alertMsg = "Are you sure you want to proceed, The amount is > 0 for item numbers " + validItemNos.toString();
} else {
    // 没有符合条件的行时的提示,可根据业务调整
    alertMsg = "没有金额大于0的账单行";
}
// 此处调用你项目里的弹窗方法输出alertMsg即可

扩展方案(需要单独存储行号做其他逻辑时使用)

如果后续需要对符合条件的行号做其他业务处理,也可以用数组代替List存储:

// 最大可能的符合条件的行号数量就是总行数
int[] validRows = new int[totalNoOfRows];
// 计数符合条件的行数
int count = 0;
for (int i = 0; i < totalNoOfRows; i++) {
    String amountStr = "动态取值";
    double amount = Double.parseDouble(amountStr);
    if(amount > 0) {
        validRows[count] = i + 1;
        count++;
    }
}
// 后续遍历validRows的前count个元素即可拿到所有符合条件的行号

内容的提问来源于stack exchange,提问作者Java Girl

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:24:02