java - 初始化将在循环内设置的变量时有什么好的做法?
问题描述
以下代码只是一个示例,但我发现自己经常遇到此错误。
在这种情况下,当我尝试调用 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));
}
解决方案
正如@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));
}
推荐阅读
- html - css 显示 flex 和换行
- c# - 基于datagrid c# wpf中的列从datagrid视图中禁用按钮
- html - 试图在引导程序 4 中居中弹性部分
- android - RecyclerView 会不定期更新
- angular - Angular 6显示应用程序引导的进度
- android - WINDOWS:不推荐使用“android”命令
- android-studio - 找不到项目所需的 com.project.expoview:26.0.0:Android Studio 中的应用程序?
- python - Pycharm:安装包后未解决的引用
- awk - 使用 awk 拆分列
- android - @inject 接口不是 dagger2 android 中的实现