【发布时间】:2018-06-23 10:10:49
【问题描述】:
当我尝试运行这段代码时:
public static void main(String[] args) {
double salary = 10.1;
if (salary >= 100.3)
double number = salary * 10;
else
double number = salary * 20;
}
我收到以下错误:
标记“double”的语法错误,删除此标记
两者兼有:
数字无法解析为变量
现在代码故意不好,因为这是一个问题,我们必须说明它的所有问题。
据我了解,最好不要两次声明同一个变量,最好始终使用大括号;但是如果不使用大括号,为什么double number = salary * 10; 和double number = salary * 20; 会导致问题?我原以为它仍然可以正确编译和运行(如果使用括号,它可以工作)。
【问题讨论】:
-
在没有大括号的
if语句中不允许声明。这是因为,如果if中只能有一个声明,那么声明是没有用的。范围立即结束。 -
你当然可以
double number = salary >= 100.3 ? salary * 10 : salary * 20;甚至double number = salary * (salary >= 100.3 ? 10 : 20); -
@bcsb1001 它不会完全没用:
int a = someFunctionWithSideEffect(a = veryExpensiveMethod(), a);(否则)是合法的(也许令人惊讶);在这里,a可以用作临时变量,以避免重新计算参数。但这不是完全明智的代码,如果你真的想使用它,你总是可以用大括号把它包起来。只是指出您可以在 if 中使用变量声明来达到一些模糊的实际目的。
标签: java