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
相关产品推荐
相关产品推荐

