如何使用在if
塊之外的if
語句內聲明的變量?如何使用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語句之外的if語句中聲明的變量?
if(z<100){
int amount=sc.nextInt();
}
while(amount!=100)
{ //this is wrong.it says we cant find amount variable ?
something
}
你不能,它只能限制在if塊中,或者使它的作用域更明顯,比如聲明它在外面,如果在該作用域內使用它。在Java中
int amount=0;
if (z<100) {
amount=sc.nextInt();
}
while (amount!=100) { // this is right.it will now find amount variable ?
// something
}
檢查here有關變量的作用域
爲了使用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;
的amount
範圍被束縛在花括號內,所以你不能在外面使用它。
解決的辦法是把它當塊之外(請注意,amount
不會被髮送,如果如果條件不滿足):
int amount;
if(z<100){
amount=sc.nextInt();
}
while (amount!=100){ }
或者你打算讓while語句是內部的,如果:
if (z<100) {
int amount=sc.nextInt();
while (amount!=100) {
// something
}
}
瞭解更多關於變量的作用域:http://www.java2s.com/Tutorial/Java/0020__Language/VariableScope.htm –