在if语句中分配变量值

时间:2013-04-22 13:40:12

标签: java

我想知道是否可以在条件运算符中为变量赋值,如下所示:

if((int v = someMethod()) != 0) return v;

有没有办法在Java中执行此操作?因为我知道在while条件下这是可能的,但是我不确定我是否对if语句做错了,或者它是不可能的。

9 个答案:

答案 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来完成,因为它们都期望一个布尔条件。