Alxen



AFools_love
本帖最后由 AFools_love 于 2021-7-28 22:19 编辑

cn.mcgal.forge.database.DataManager.java
  1. public String listToString(List<String> list) {
  2.         StringBuffer sb = new StringBuffer();
  3.         for (String str : list)
  4.                 sb.append(String.valueOf(str) + ",");
  5.         return sb.substring(0, sb.length() - 1);
  6. }
复制代码

  1. return sb.substring(0, sb.length() - 1);
复制代码

如果传入的list中没有元素怎么办?
sb中字符数量为0,sb.length() - 1 = 0 - 1 = -1,能截取到 0至-1的字符串吗?
0.  只解决问题
  1. return sb.substring(0, Math.max(sb.length() - 1, 0));
复制代码

1.  稍加思考1.0
  1. return sb.length() == 0 ? "" : sb.substring(0, sb.length() - 1);
复制代码

2.  稍加思考2.0 JDK 15+
  1. return sb.isEmpty() ? "" : sb.substring(0, sb.length() - 1);
复制代码

3.  重写逻辑

Alxen
AFools_love 发表于 2021-7-28 20:40
cn.mcgal.forge.database.DataManager.java

感谢您的帮助,我已自行解决。
在执行数据库命令前判断Arrylist是否为空

第一页 上一页 下一页 最后一页