我想知道是否可以在条件运算符中为变量赋值,如下所示:
if((int v = someMethod()) != 0) return v;
有没有办法在Java中执行此操作?因为我知道在while
条件下这是可能的,但是我不确定我是否对if语句做错了,或者它是不可能的。
答案 0 :(得分:127)
可以在条件语句中分配变量但不声明变量:
int v;
if((v = someMethod()) != 0) return true;
答案 1 :(得分:24)
您可以在if
内分配,但不能声明:
试试这个:
int v; // separate declaration
if((v = someMethod()) != 0) return true;
答案 2 :(得分:16)
赋值返回赋值的左侧。所以:是的。有可能的。但是,您需要在外部声明变量:
int v = 1;
if((v = someMethod()) != 0) {
System.err.println(v);
}
答案 3 :(得分:5)
是的,你可以在if。
中分配变量的值我不推荐它。问题是,您尝试比较值时看起来像是一个常见错误,但使用单个=
代替==
或===
。
如果你这样做会更好:
int v;
if((v = someMethod()) != 0)
return true;
答案 4 :(得分:2)
我相信您的问题是由于您在测试中定义变量v的事实。正如@rmalchow所解释的那样,你可以将它改成
int v;
if((v = someMethod()) != 0) return true;
还有另一个可变范围的问题。即使你尝试过的是什么工作,重点是什么?假设您可以在测试中定义变量范围,那么您的变量v将不会存在于该范围之外。因此,创建变量并分配值将毫无意义,因为您将无法使用它。
变量仅存在于创建的范围内。由于您之后要分配值以使用它,请考虑创建变量的范围,以便可以在需要的地方使用它。
答案 5 :(得分:2)
是的,这是可能的。请考虑以下代码:
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;
}
}
我希望这能满足你的问题。
答案 6 :(得分:1)
是的,如果有条件检查,可以在里面分配。但是,你的变量应该已经被声明为赋值。
答案 7 :(得分:0)
您可以在if
语句中指定变量,但必须先声明它
答案 8 :(得分:0)
因为我知道在有条件的情况下它是可能的,但我不确定是否 我对if语句做错了,或者说它是不可能的。
提示:什么类型的时候和条件应该是什么?
如果可以用while完成,可以使用if语句作为weel来完成,因为它们都期望一个布尔条件。