Когда я пытаюсь запустить этот код:
public static void main(String[] args) {
double salary = 10.1;
if (salary >= 100.3)
double number = salary * 10;
else
double number = salary * 20;
}
Я получаю следующие ошибки:
Синтаксическая ошибка в токене "двойной", удалите этот токен
и то и другое:
число не может быть преобразовано в переменную
Теперь код намеренно плохой, поскольку это вопрос, в котором мы должны указать все, что в нем не так.
Насколько я понимаю, лучше всего не объявлять одну и ту же переменную дважды и лучше всегда использовать фигурные скобки; но почему double number = salary * 10;
и double number = salary * 20;
вызывают проблему, если фигурные скобки не используются? Я бы подумал, что это все равно будет правильно компилироваться и работать (это работает, если используются скобки).
if
без фигурных скобок. Это потому, что если у вас может быть только один оператор вif
, объявление бесполезно. Объем заканчивается немедленно. - person bcsb1001   schedule 14.01.2018double number = salary >= 100.3 ? salary * 10 : salary * 20;
или дажеdouble number = salary * (salary >= 100.3 ? 10 : 20);
- person T.J. Crowder   schedule 14.01.2018int a = someFunctionWithSideEffect(a = veryExpensiveMethod(), a);
является (в противном случае) законным (возможно, неожиданно); здесьa
можно использовать как временную переменную, чтобы избежать повторного вычисления параметра. Но это не совсем разумный код, и если вы действительно хотите его использовать, вы всегда можете просто заключить его в фигурные скобки. Просто указываю, что вы можете использовать объявление переменной в if для какой-то смутно практической цели. - person Andy Turner   schedule 14.01.2018