在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语句来完成,因为两者都期望布尔条件。