如何使用我在if
块之外的if
语句中声明的变量?
if(z<100){
int amount=sc.nextInt();
}
while(amount!=100)
{ //this is wrong.it says we cant find amount variable ?
something
}
答案 0 :(得分:8)
amount
的范围绑定在花括号内,所以你不能在外面使用它。
解决方法是将其置于if块之外(请注意,如果if条件失败,将不会分配amount
):
int amount;
if(z<100){
amount=sc.nextInt();
}
while ( amount!=100){ }
或许您打算将while语句放在if:
中if ( z<100 ) {
int amount=sc.nextInt();
while ( amount!=100 ) {
// something
}
}
答案 1 :(得分: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;
答案 2 :(得分:4)
你不能,它只限于if块。要么使其范围更加可见,比如在外面声明它并在该范围内使用它。
int amount=0;
if ( z<100 ) {
amount=sc.nextInt();
}
while ( amount!=100 ) { // this is right.it will now find amount variable ?
// something
}
检查here有关java中可变范围的内容