如何保存for循环中使用的最后一个整数

时间:2013-03-17 20:31:19

标签: java for-loop save

我目前正在开发一个程序,我需要保存上次使用的整数的值。

让我们考虑一下这种情况:

   for (int i = 1;i<=28123;i++){
        if (isAbundant(i)){
            if (i*2 <= 28123){
                sum2 += i*2;
            }
            if (i + [the previous value of i] <= 28123){
                sum2 += i + [the previous value of i];
            }
        }
    }

如何让previous value of i实际代表i的先前值?我是否需要将i另存为另一个变量?如果是这种情况,i会不会变成当前的i

如果您发现问题集,则此问题来自:请不要对问题本身发表评论。请直接回答这个问题。

2 个答案:

答案 0 :(得分:3)

尽管提出问题的方式(方式没有任何成本),但在循环之外定义int i:

int i=0;
for (i = 1;i<=28123;i++){
    if (isAbundant(i)){
        if (i*2 <= 28123){
            sum2 += i*2;
        }
        if (i + (i-1) <= 28123) { //your only ++ing i, so previous value is always i-1
            sum2 += i + (i-1);
        }
    }
}

//i is now accessable here

答案 1 :(得分:1)

试试这个。但是,您可能需要根据您的要求处理第一次迭代的特殊情况。

int pre = 0;
for (int i = 1; i <= 28123; i++) {
    if (isAbundant(i)) {
        if (i * 2 <= 28123) {
            sum2 += i * 2;
        }
        if (i + pre <= 28123) {
            sum2 += i + pre;
        }
    }
    pre = i;
}