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 块之外(请注意,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
   }

}
于 2012-11-08T08:33:47.423 回答
5

为了amount在外部范围内使用,您需要在if块外声明它:

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

为了能够读取它的值,您还需要确保在所有路径中都为其分配了一个值。您还没有展示您想要如何执行此操作,但一种选择是使用其默认值 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 回答