Java 在if语句中指定变量值
我想知道是否可以在条件运算符中为变量赋值,如下所示:Java 在if语句中指定变量值,java,Java,我想知道是否可以在条件运算符中为变量赋值,如下所示: if((int v=someMethod())!=0)返回v 在Java中有什么方法可以做到这一点吗?因为我知道这在while条件下是可能的,但是我不确定我是否对if语句做了错误的处理,或者这是不可能的。是的,您可以在if中指定变量的值 我不推荐。问题是,它看起来像是一个常见错误,您尝试比较值,但使用单个=而不是=或== 如果你这样做会更好: int v; if((v = someMethod()) != 0) return true
if((int v=someMethod())!=0)返回v代码>
在Java中有什么方法可以做到这一点吗?因为我知道这在while
条件下是可能的,但是我不确定我是否对if语句做了错误的处理,或者这是不可能的。是的,您可以在if中指定变量的值
我不推荐。问题是,它看起来像是一个常见错误,您尝试比较值,但使用单个=
而不是=
或==
如果你这样做会更好:
int v;
if((v = someMethod()) != 0)
return true;
变量可以赋值,但不能在条件语句中声明:
int v;
if((v = someMethod()) != 0) return true;
您可以在if
语句中指定一个变量,但必须先声明它
因为我知道在while条件下这是可能的,但我不确定
对于if语句,或者如果它不可能,我就错了
提示:while和if条件应该是什么类型
如果可以使用while来完成,那么可以使用If语句作为weel来完成,因为它们都需要一个布尔条件 赋值返回赋值的左侧。所以:是的。这是可能的。但是,您需要在以下外部声明变量:
int v = 1;
if((v = someMethod()) != 0) {
System.err.println(v);
}
是,可以指定内部if条件检查。但是,您的变量应该已经声明为赋值。您可以在中赋值,但不能在中声明,如果
:
试试这个:
int v; // separate declaration
if((v = someMethod()) != 0) return true;
我相信你的问题是因为你在测试中定义了变量v。正如@rmalchow所解释的,如果您将其更改为
int v;
if((v = someMethod()) != 0) return true;
还有另一个变量范围的问题。即使你所尝试的成功了,那又有什么意义呢?假设您可以在测试中定义变量范围,那么变量v将不存在于该范围之外。因此,创建变量并赋值将是毫无意义的,因为您将无法使用它
变量只存在于它们创建的范围内。由于您要在以后分配使用它的值,请考虑创建变量的范围,以便可以在需要的地方使用。p> 是的,这是可能的。考虑下面的代码:
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;
}
}
我希望这能满足您的问题。根据,赋值返回左侧的值(被赋值的变量)。@rmalchow更正,您不必初始化变量,这取决于if语句的作用。例如,如果它返回,则不需要初始化。@StenSoft-true。然而。。。我想知道,除了长i=(int)2;-这有什么意义吗?@randomUser56789你能详细说明一下吗?“if((int v=call())!=4)”就是不起作用。@rmalchow它确实不起作用。我说过你不必在外部初始化变量,但你必须在外部声明它。因此,如果你需要声明,只需将someMethod()
assign放在声明前面int v=someMethod()
Pitty,对我来说没有oneliner:(我Pitty the oneliner>:我很遗憾int foo
@wviana True,但是对于while
循环仍然非常有用。这很容易让你自食其果,因为它编译得很好……boolean b=false;if(b=True){//oops}
@EddieB这可不像是在射自己的脚。更多的是不知道你手里的枪是什么。高斯林以前者的名义把爪哇搞得一团糟,而大部分时间都是因为后者。