如何在Java中使用String.format打印List全部元素并拼接为完整句子
问题原因
你现有代码的问题是循环内每次都对result变量做全量覆盖赋值,上一轮的计算结果会被直接清空替换,循环结束后result只会保留最后一次的赋值内容,也就是列表的最后一个元素c。
解决方案
方案1:Java 8及以上版本(最简写法)
直接使用JDK自带的String.join方法,指定分隔符批量拼接列表所有元素,再和前缀语句组合即可,无需手动写循环:
public static void main(String[] args) { ArrayList<String> strings = new ArrayList<>(); strings.add("a"); strings.add("b"); strings.add("c"); // 用逗号+空格作为分隔符拼接所有列表元素 String joinedContent = String.join(", ", strings); // 如果需要和你注释里的预期一致末尾加句号,可改为 "This list contains: %s." String result = String.format("This list contains: %s", joinedContent); System.out.println(result); }
运行后输出为This list contains: a, b, c,完全符合需求。
方案2:兼容Java 8以下低版本写法
如果使用的JDK版本低于8,可通过StringBuilder手动遍历拼接元素,避免每次赋值覆盖:
public static void main(String[] args) { ArrayList<String> strings = new ArrayList<>(); strings.add("a"); strings.add("b"); strings.add("c"); StringBuilder contentBuilder = new StringBuilder(); for (int i = 0; i < strings.size(); i++) { contentBuilder.append(strings.get(i)); // 非最后一个元素追加逗号分隔符 if (i != strings.size() - 1) { contentBuilder.append(", "); } } String result = "This list contains: " + contentBuilder; System.out.println(result); }
内容的提问来源于stack exchange,提问作者Rey Cai
相关产品推荐
相关产品推荐

