首页 > 解决方案 > 初始化将在循环内设置的变量时有什么好的做法?

问题描述

以下代码只是一个示例,但我发现自己经常遇到此错误。

在这种情况下,当我尝试调用 isPrime(factor1) 时,我收到一条错误消息,提示“变量 factor1 可能尚未初始化”。

我知道快速解决方法是将 factor1 和 factor2 都初始化为 0 或 -1。但是,对于此类情况,最佳做法是什么?

另请注意,这只是一段代码。

int factor1;
int factor2;

for(int i = 2; i< n; i++) {
    if(n % i == 0){
        factor1 = n / i;
        factor2 = i;
        break;
    }
}

if(isPrime(factor1)){
    factors.add(factor1);
} else {
    factors.addAll(primeFactorization(factor1));
}

标签: javaloopsvariables

解决方案


正如@Hovercraft Full Of Eels 指出的那样,在大多数情况下,您只需将变量初始化为某个默认值,例如:

int factor1 = 0, factor2 = 0;
for(int i = 2; i< n; i++) {
    if(n % i == 0){
        factor1 = n / i;
        factor2 = i;
        break;
    }
}
if(isPrime(factor1)){
    factors.add(factor1);
} else {
    factors.addAll(primeFactorization(factor1));
}

推荐阅读