在if语句中分配variables值
我想知道是否有可能在一个条件运算符内赋值一个variables,如下所示:
if((int v = someMethod()) != 0) return v;
有什么办法可以在Java中做到这一点? 因为我知道在while
条件下是可能的,但是我不确定if语句是错误的,还是不可能。
variables可以在条件语句中赋值,但不能声明:
int v; if((v = someMethod()) != 0) return true;
您可以在if
分配 ,但不能声明 :
尝试这个:
int v; // separate declaration if((v = someMethod()) != 0) return true;
分配将返回作业的左侧。 所以:是的。 有可能的。 但是,您需要在外部声明variables:
int v = 1; if((v = someMethod()) != 0) { System.err.println(v); }
是的,你可以在里面分配variables的值。
我不会推荐它。 问题是,它看起来像一个常见的错误,你尝试比较值,但使用单一=
而不是==
或===
。
如果你做这样的事情会更好:
int v; if((v = someMethod()) != 0) return true;
我相信你的问题是由于你在testing中定义了variablesv。 正如@rmalchow所解释的那样,它将会改变你的工作
int v; if((v = someMethod()) != 0) return true;
另外还有一个可变范围的问题。 即使你所尝试的是工作,那又有什么意义呢? 假设你可以在testing中定义variables作用域,你的variablesv就不会在该作用域之外存在。 因此,创buildvariables并分配值将是毫无意义的,因为您将无法使用它。
variables只存在于创build的范围内。 既然您正在分配值来使用它,请考虑创buildvariables的范围,以便在需要时使用它。
是的,如果有条件检查,可以在里面指定。 但是,你的variables应该已经被声明来分配一些东西。
是的,这是可能的。 考虑下面的代码:
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
语句中指定一个variables,但是你必须先声明它
因为我知道在while条件下是可能的,但是我不确定if语句是错误的,还是不可能。
提示:什么types,而如果条件应该是?
如果可以用while来完成,那么可以用if语句来完成,因为两者都期望布尔条件。