我在主要代码中写了这段代码:
if (startAmount>0) //create new cashier object with or without a start amount
Cashier newCashier = new Cashier(startAmount);
else Cashier newCashier = new Cashier();
并且第二行和第三行出现编译错误:
Multiple markers at this line
- Cashier cannot be resolved to a variable
- Syntax error on token "newCashier", delete
和
Multiple markers at this line
- Cashier cannot be resolved to a variable
- Syntax error, insert "AssignmentOperator Expression" to complete
Assignment
- Syntax error, insert ";" to complete Statement
但是当我用括号写这样的代码时:
if (startAmount>0)//create new cashier object with or without a start amount
{
Cashier newCashier = new Cashier(startAmount);
}
else{ Cashier newCashier = new Cashier();}
似乎没关系,没有编译错误。 有人可以帮助我理解为什么吗?
答案 0 :(得分:3)
为什么要为newCachier
引用创建阴影变量,
你宁愿这样做
Cashier newCashier = null;
if (startAmount>0) //create new cashier object with or without a start amount
newCashier = new Cashier(startAmount);
else
newCashier = new Cashier();
答案 1 :(得分:0)
添加花括号总是更好。因为在扩展代码时不会忘记添加它们,否则会导致奇怪的行为。
我认为您对第一个问题的例外可能会因为您忘记将您的其他声明放入新行,但我不确定。