我希望我的arraylist打印这样的元素:
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);
Run Code Online (Sandbox Code Playgroud)
你实际上是在打印years
,它会打印String
出来toString()
的ArrayList
.
您正在多次获取该数组,因为该print
语句位于for
循环内部,因此每次迭代它将打印该数组(最近添加了该元素).要只打印一次数组,请移动print
循环外部.
如果要打印每个元素,[]
可以尝试以下方法:
for (Integer i : years) {
System.out.print(i + ", "); // This will print a comma at the end
}
Run Code Online (Sandbox Code Playgroud)
或者这个,以避免打印额外的逗号,
:
for (int i = 0; i < years.size() - 1; i++) {
System.out.print(years.get(i) + ", ");
}
System.out.println(years.get(years.size() - 1));
Run Code Online (Sandbox Code Playgroud)
输出:
1894, 1895, 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, ...
Run Code Online (Sandbox Code Playgroud)
编辑:
您还可以toString
在创建新实例时覆盖该方法ArrayList
:
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();
}
};
Run Code Online (Sandbox Code Playgroud)
因此,您可以System.out.println(years);
按照自己的方式打印阵列.
编辑2:
既然你编辑的问题,我建议你不这样做,你可以这样做增加一个新的行字符\ n
或改变print
的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));
Run Code Online (Sandbox Code Playgroud)
如果你是覆盖toString
方法,ArrayList
你也可以附加一个换行符.用`替换`sb.append(",")
sb.append(", \n")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
163 次 |
最近记录: |