2012-11-08 170 views
2

如何使用在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 
} 
+2

瞭解更多關於變量的作用域:http://www.java2s.com/Tutorial/Java/0020__Language/VariableScope.htm –

回答

4

你不能,它只能限制在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有關變量的作用域

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; 
8

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 
    } 

} 
+0

這不實際工作,因爲量變量並不總是分配,其他答案比較好。 – EdC

+0

@EdC如果不理解OP的問題,很難說「實際」會起什麼作用。希望這個答案能夠解釋這個問題。 – Pubby