2

ブロックif外のステートメント内で宣言した変数を使用するにはどうすればよいですか?if

if(z<100){
    int amount=sc.nextInt();
}

while(amount!=100)
{ //this is wrong.it says we cant find amount variable ?
    something
}
4

3 に答える 3

8

のスコープはamount中括弧の内側にバインドされているため、外側では使用できません。

解決策は、if ブロックの外に出すことです ( amountif 条件が失敗した場合は割り当てられないことに注意してください)。

int amount;

if(z<100){

    amount=sc.nextInt();

}

while ( amount!=100){  }

または、while ステートメントが if の中にあることを意図しているかもしれません。

if ( z<100 ) {

    int amount=sc.nextInt();

    while ( amount!=100 ) {
        // something
   }

}
于 2012-11-08T08:33:47.423 に答える
5

外側のスコープで使用するには、ブロック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;
于 2012-11-08T08:33:44.647 に答える
4

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の変数スコープについてはこちらをご覧ください

于 2012-11-08T08:33:17.220 に答える