Присвоить значение переменной внутри if-оператора [дубликат]
этот вопрос уже есть ответ здесь:
мне было интересно, можно ли присвоить переменной значение внутри условного оператора, как так:
if((int v = someMethod()) != 0) return v;
есть ли способ сделать это в Java? Потому что я знаю это возможно в while условия, но я не уверен, что я делаю это неправильно для if-оператора или если это просто невозможно.
9 ответов:
переменные могут быть назначены, но не объявленные внутри условного оператора:
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; } }Я надеюсь, что это удовлетворит ваш вопрос.
да, можно назначить внутри, если условная проверка. Но, ваша переменная уже должна быть объявлена, чтобы назначить что-то.
потому что я знаю, что это возможно в условиях while, но я не уверен, если Я делаю это неправильно для if-заявления или если это просто невозможно.
подсказка: что типа пока и если условие должно быть ??
Если это можно сделать с помощью while, это можно сделать с помощью оператора if как weel, поскольку оба они ожидают логическое условие.
Comments