final int a, b;
if (condition1) {
a = get(dynamicValues);
b = get(dynamicValues);
}
if (condition2) {
int c = b + a;
display(c);
}
在这种类型的代码中,编译器要求初始化a和b,直到满足condition1时我才能这样做。由于小时和分钟的值会不断变化,因此a和b必须为最终值。
上面编写的代码非常笼统,只是为了让您了解我的问题。
更新:这里的问题是
condition2
是else
的condition1
条件之一。因此也不能使用else语句。动态值是始终更改的“小时和分钟”之类的值。当满足条件1时,将a和b设置为小时和分钟,条件2肯定会在条件1之后的某个时间发生。因此需要计算condition2和condition1之间的时间差。
最佳答案
如果condition1为false,则a和b保持未初始化。这就是编译器抱怨的原因。添加else分支,它将正确编译
if(condition1)
{
a=cal.get(Calendar.HOUR);
b=cal.get(Calendar.MINUTE);
} else {
a = 0;
b = 0;
}