次のように、条件演算子内で変数に値を割り当てることができるかどうか疑問に思っていました。
if((int v = someMethod()) != 0) return v;
Javaでこれを行う方法はありますか? 条件付きで可能であることはわかってwhile
いますが、if ステートメントで間違っているのか、それとも単に不可能なのかはわかりません。
次のように、条件演算子内で変数に値を割り当てることができるかどうか疑問に思っていました。
if((int v = someMethod()) != 0) return v;
Javaでこれを行う方法はありますか? 条件付きで可能であることはわかってwhile
いますが、if ステートメントで間違っているのか、それとも単に不可能なのかはわかりません。
変数を割り当てることはできますが、条件ステートメント内で宣言することはできません。
int v;
if((v = someMethod()) != 0) return true;
内でを割り当てることはできますが、宣言することはできませんif
。
これを試して:
int v; // separate declaration
if((v = someMethod()) != 0) return true;
代入は、代入の左側を返します。あ、はい。可能です。ただし、外部で変数を宣言する必要があります。
int v = 1;
if((v = someMethod()) != 0) {
System.err.println(v);
}
はい、可能です。以下のコードを検討してください。
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
最初に宣言する必要があります
while 条件でそれが可能であることはわかっていますが、if ステートメントに対して間違っているのか、それとも単に不可能なのかはわかりません。
ヒント: while および if 条件の型は??
どちらもブール条件を想定しているため、while で実行できる場合は、if ステートメントでも実行できます。