Ответ 1
Переменные могут быть назначены, но не объявлены внутри условного оператора:
int v;
if((v = someMethod()) != 0) return true;
Мне было интересно, можно ли присвоить переменную значение внутри условного оператора так:
if((int v = someMethod()) != 0) return v;
Есть ли способ сделать это в Java? Поскольку я знаю, что это возможно в while
условиях, но я не уверен, что я делаю это неправильно для if-statement или если это просто невозможно.
Переменные могут быть назначены, но не объявлены внутри условного оператора:
int v;
if((v = someMethod()) != 0) return true;
Вы можете назначить, но не объявлять, внутри if
:
Попробуйте следующее:
int v; // separate declaration
if((v = someMethod()) != 0) return true;
присваивание возвращает левую часть задания. так да. возможно. однако вам нужно объявить переменную снаружи:
int v = 1;
if((v = someMethod()) != 0) {
System.err.println(v);
}
Да, вы можете назначить значение переменной внутри if.
Я бы не рекомендовал его. Проблема в том, что это похоже на общую ошибку, когда вы пытаетесь сравнить значения, но используйте один =
вместо ==
или ===
.
Лучше, если вы сделаете что-то вроде этого:
int v;
if((v = someMethod()) != 0)
return true;
Я считаю, что ваша проблема связана с тем, что вы определяете переменную v внутри теста. Как объяснил @rmalchow, он сработает, если вы измените его на
int v;
if((v = someMethod()) != 0) return true;
Существует и другая проблема с переменной областью. Даже если бы вы пытались работать, в чем дело? Предполагая, что вы можете определить область переменной внутри теста, ваша переменная v не будет существовать вне этой области. Следовательно, создание переменной и присвоение значения было бы бессмысленным, поскольку вы не смогли бы использовать его.
Переменные существуют только в том объеме, в котором они были созданы. Поскольку вы назначаете значение для его использования впоследствии, рассмотрите область, в которой вы создаете переменную, чтобы ее можно было использовать там, где это необходимо.
Да, можно назначить внутри, если условная проверка. Но ваша переменная должна была быть объявлена для назначения чего-то.
Да, это возможно. Рассмотрим следующий код:
public class Test
{
public static void main (String[] args)
{
int v = 0;
if ((v=dostuff())!=0)
{
System.out.printf("HOWDY\n");
}
}
public static int dostuff()
{
//dosomething
return 1;
}
}
Надеюсь, это удовлетворит ваш вопрос.
Вы можете назначить переменную внутри оператора if
, но сначала вы должны объявить ее
Потому что я знаю, что это возможно во время условий, но я не уверен, Я делаю это неправильно для if-утверждения или если это просто невозможно.
СОВЕТ: какой тип while и если условие должно быть?
Если это можно сделать с помощью while, это можно сделать с помощью инструкции if как weel, так как оба они ожидают логическое условие.