115

次のように、条件演算子内で変数に値を割り当てることができるかどうか疑問に思っていました。

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

Javaでこれを行う方法はありますか? 条件付きで可能であることはわかってwhileいますが、if ステートメントで間違っているのか、それとも単に不可能なのかはわかりません。

4

9 に答える 9

197

変数を割り当てることはできますが、条件ステートメント内で宣言することはできません。

int v;
if((v = someMethod()) != 0) return true;
于 2013-04-22T13:42:53.377 に答える
28

内でを割り当てることはできますが、宣言することはできませんif

これを試して:

int v; // separate declaration
if((v = someMethod()) != 0) return true;
于 2013-04-22T13:47:16.867 に答える
21

代入は、代入の左側を返します。あ、はい。可能です。ただし、外部で変数を宣言する必要があります。

int v = 1;
if((v = someMethod()) != 0) {
    System.err.println(v);
}
于 2013-04-22T13:43:39.263 に答える
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; 
    }       
}          

これがあなたの質問を満足させることを願っています。

于 2013-04-22T13:57:11.190 に答える
1

はい、条件付きチェックの場合は内部に割り当てることができます。ただし、変数は何かを割り当てるために既に宣言されている必要があります。

于 2013-04-22T13:43:51.867 に答える
1

ステートメント内で変数を割り当てることができますが、if最初に宣言する必要があります

于 2013-04-22T13:42:55.157 に答える
0

while 条件でそれが可能であることはわかっていますが、if ステートメントに対して間違っているのか、それとも単に不可能なのかはわかりません。

ヒント: while および if 条件の型は??

どちらもブール条件を想定しているため、while で実行できる場合は、if ステートメントでも実行できます。

于 2013-04-22T13:43:18.970 に答える