问题
有没有办法确定循环是否最后一次迭代。我的代码看起来像这样:
int[] array = {1, 2, 3...};
StringBuilder builder = new StringBuilder();
for(int i : array)
{
builder.append("" + i);
if(!lastiteration)
builder.append(",");
}
现在问题是我不想在最后一次迭代中附加逗号。现在有一种方法可以确定它是最后一次迭代还是我坚持使用for循环或使用外部计数器来跟踪。
#1 热门回答(216 赞)
另一个选择是在你追加i之前附加逗号,而不是在第一个时候。 (请不要使用"" + i
,顺便说一下 - 你真的不想在这里连接,而且StringBuilder有一个非常好的追加(int)重载。)
int[] array = {1, 2, 3...};
StringBuilder builder = new StringBuilder();
for (int i : array) {
if (builder.length() != 0) {
builder.append(",");
}
builder.append(i);
}
关于这一点的好处是它可以与任何Iterable
一起工作 - 你不能总是索引事物。 (当你真正使用StringBuilder时,"添加逗号然后在最后删除它"是一个很好的建议 - 但它不适用于写入流等的东西。虽然这可能是解决这个问题的最佳方法。 )
#2 热门回答(140 赞)
另一种方法:
String delim = "";
for (int i : ints) {
sb.append(delim).append(i);
delim = ",";
}
更新:对于Java 8,你现在拥有56532067
#3 热门回答(39 赞)
总是追加可能更容易。然后,当你完成循环时,只需删除最后一个字符。通过这种方式减少条件。
你可以使用StringBuilder
的deleteCharAt(int index)
,索引号为length() - 1