ブロックif
外のステートメント内で宣言した変数を使用するにはどうすればよいですか?if
if(z<100){
int amount=sc.nextInt();
}
while(amount!=100)
{ //this is wrong.it says we cant find amount variable ?
something
}
ブロックif
外のステートメント内で宣言した変数を使用するにはどうすればよいですか?if
if(z<100){
int amount=sc.nextInt();
}
while(amount!=100)
{ //this is wrong.it says we cant find amount variable ?
something
}
のスコープはamount
中括弧の内側にバインドされているため、外側では使用できません。
解決策は、if ブロックの外に出すことです ( amount
if 条件が失敗した場合は割り当てられないことに注意してください)。
int amount;
if(z<100){
amount=sc.nextInt();
}
while ( amount!=100){ }
または、while ステートメントが if の中にあることを意図しているかもしれません。
if ( z<100 ) {
int amount=sc.nextInt();
while ( amount!=100 ) {
// something
}
}
外側のスコープで使用するには、ブロックamount
の外側で宣言する必要があります。if
int amount;
if (z<100){
amount=sc.nextInt();
}
その値を読み取れるようにするには、すべてのパスで値が割り当てられていることを確認する必要もあります。これを行う方法は示されていませんが、1 つのオプションは、既定値の 0 を使用することです。
int amount = 0;
if (z<100) {
amount = sc.nextInt();
}
または、条件演算子を使用してより簡潔に:
int amount = (z<100) ? sc.nextInt() : 0;
ifブロックに限定されているだけです.ifの外側で宣言してそのスコープ内で使用するなど、そのスコープをより目に見えるようにすることはできません。
int amount=0;
if ( z<100 ) {
amount=sc.nextInt();
}
while ( amount!=100 ) { // this is right.it will now find amount variable ?
// something
}
Javaの変数スコープについてはこちらをご覧ください