gpt4 book ai didi

java - Arraylist 正在将先前添加的元素与新添加的元素一起打印

转载 作者:行者123 更新时间:2023-12-02 11:12:12 25 4
gpt4 key购买 nike

我希望我的数组列表打印如下元素:

1894,

1895,

1896,

等等..

但我得到的是 1894、1895、1896

     ArrayList<Integer> years = new ArrayList<Integer>();
int j;

for (j = 1894; j < 2014; j++)

{
years.add(j);
//comboyears.addItem(j);

}
System.out.println(years);

最佳答案

您实际上正在打印years,它将打印ArrayListtoString()返回的String >.

您多次获取数组,因为 print 语句位于 for 循环内,因此每次迭代都会打印该数组(最近添加的元素) 。要仅打印数组一次,请将 print 移到循环之外。

如果您想在没有 [] 的情况下打印每个元素,您可以尝试以下操作:

for (Integer i : years) {
System.out.print(i + ", "); // This will print a comma at the end
}

或者这样,以避免打印额外的逗号 ,:

for (int i = 0; i < years.size() - 1; i++) {
System.out.print(years.get(i) + ", ");
}
System.out.println(years.get(years.size() - 1));

输出:

1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, ...

编辑:

您还可以在创建 ArrayList 的新实例时重写 toString 方法:

ArrayList<Integer> years = new ArrayList<Integer>()
{
@Override
public String toString()
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < size() - 1; i++) {
sb.append(get(i));
sb.append(", ");
}
sb.append(get(size() - 1));
return sb.toString();
}
};

所以你可以按照你想要的方式打印数组System.out.println(years);

编辑2:

由于您已经编辑了问题,我建议您不要这样做,您可以添加换行符 \n 或更改 通过 println 打印:

for (int i = 0; i < years.size() - 1; i++) {
System.out.println(years.get(i) + ", "); // or concatenate with ", \n"
}
System.out.println(years.get(years.size() - 1));

如果您要重写 ArrayList 中的 toString 方法,您也可以附加换行符。将 `sb.append(", ") 替换为

sb.append(", \n")

关于java - Arraylist 正在将先前添加的元素与新添加的元素一起打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21338582/

25 4 0