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必须为最终值。
上面编写的代码非常笼统,只是为了让您了解我的问题。

更新:这里的问题是condition2elsecondition1条件之一。因此也不能使用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;
 }

07-24 09:20