在for循环中创建临时变量

时间:2018-02-16 15:08:47

标签: java for-loop arraylist

我有一个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循环,我会把它放在哪里?

3 个答案:

答案 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);
}