我有一个for循环,旨在为一个arraylist添加6个值。
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = list.size(); i < list.size() + 6; i++){
list.add(2 * i);
}
现在这会产生一个无限循环。我的问题是我是否可以声明一个在整个for
循环中持续存在的变量,那不是i
,还是我必须在循环之前声明它?如果我可以将它嵌入for
循环,我会把它放在哪里?
答案 0 :(得分:5)
如果要在for
语句中声明限制变量,可以这样做:
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = list.size(), n = list.size()+6; i < n; ++i) {
list.add(2 * i);
}
在这种情况下,由于您刚刚创建了列表,list.size()
从零开始,因此您可以省略额外的变量并只写:
for (int i = 0; i < 6; ++i) {
list.add(2 * i);
}
答案 1 :(得分:0)
您可以在for循环的初始化中声明尽可能多的变量。
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = list.size(), len = list.size() + 6; i < len; i++){
list.add(2 * i);
}
答案 2 :(得分:-1)
您的条件采用列表的当前大小,每次向其添加内容时都会更改。这就是为什么你最终陷入无限循环的原因,因为当前大小总是六个元素短暂结束循环。
您需要将列表的初始大小保留在变量中,您可以将其声明在循环外部或通过
ArrayList<Integer> list = new ArrayList<Integer>();
for (int max = list.size(), int i = max; i < max + 6; i++){
list.add(2 * i);
}