java - 如何在另一个 block 中使用属于一个 block 的最终变量?

标签 java variables if-statement final

final int a, b;

if (condition1) {
    a = get(dynamicValues);
    b = get(dynamicValues);
}

if (condition2) {
    int c = b + a;
    display(c);
} 

在这种类型的代码中,编译器要求初始化 a 和 b,在满足条件 1 之前我无法执行此操作。由于小时和分钟的值不断变化,因此 a 和 b 必须是最终的。 上面编写的代码非常通用,只是为了让您了解我的问题。

更新:这里的问题是 condition2condition1else 条件之一。所以也不能使用else语句。 动态值这里是像“小时和分钟”这样总是变化的值。当满足条件1时,a和b都以小时和分钟初始化,条件2肯定会在条件1之后的某个时间点发生。所以需要计算condition2和condition1的时间差。

最佳答案

如果条件1为假,a和b保持未初始化。这就是编译器提示的原因。添加else分支即可正确编译

if(condition1)
 {
  a=cal.get(Calendar.HOUR);
  b=cal.get(Calendar.MINUTE);
 } else {
   a = 0;
   b = 0;
 }

关于java - 如何在另一个 block 中使用属于一个 block 的最终变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32212636/

相关文章:

mysql - mysql查询if条件

java - 当该方法位于主 GUI 类之外时,该方法不会将数据加载到 jTable

java - Netbeans 上的 PermGen 空间错误

php - $_SESSION ['userid' ] 在一个函数中起作用,而不是在下一个函数中起作用

java - 动态设置 JRadioButton 上的文本

php - MySQL 和 PHP |选择后更新不起作用

java - 带有 SimpleLogger : Is it possible to log to a file AND System. 的 SLF4J?

java - 从 pom 获取应用程序版本

xcode - 更新来自不同类别的分数变量

MySQL 几个使用 if 的查询