2016-11-29 92 views
1

好的,在我的cs類中,我們有一個賦值,它要求我們返回一個值,然後將其設置爲零。我不知道如何做到這一點,而不使用第二個變量(這將會破壞需求),所以我會很感激一些幫助。這裏是確切的要求。設置一個值爲零

「有一個use()方法,它返回points字段中包含的值,它也將points字段重置爲零,您將不得不考慮操作順序以使其正確工作。 「

package Game; 

import java.util.Random; 

public class HealthPotion 
{ 
    private int points; 
    boolean Haspotion; 
    HealthPotion() 
    { 
     Random num1 = new Random(); 
     int num = num1.nextInt(10)+1; 
     points=num*10; 
    } 
    public int Use() 
    { 
     return points; 
    } 
    public int getPoints() 
    { 
     return points; 
    } 
} 
+0

您可以使用setter函數設置的值爲零 – Coder

+0

我可以,但說的也是我的要求之外。 –

+3

如果您有特殊要求,請特別說明。 – lee

回答

3

真的可能不是沒有濫用 finally塊,即

try { 
    return points; 
} finally { 
    points = 0; 
} 

但是這真的很難相信那會是什麼希望,因爲它不寫這樣的代碼是個好主意。

+0

這是一個很好的! –

+1

@StefanFreitag不,沒有什麼*很好*關於它:) – Kayaman

+0

可能是一個家庭作業。有時當我讀到一些問題時,我想知道老師是否喜歡不好的習慣...... +1都是一樣的:) – davidxxx

0

包括像這樣的setter方法。

public void setValue(){ 
this.points=0; 
} 

獲得該值後調用此方法。

0

這個怎麼樣?

public int Use() 
    { 
     int tmp = points; 
     points = 0; 
     return tmp; 
    } 

它具有侷限性,特別是如果points可以通過不同的線程,而此方法執行而改變。但是,如果你在單線程環境中工作,這應該沒問題。

0

這應該工作

int points = 5; 

public void test(){ 
    System.out.println(use() +" " + points); 

} 

private int use(){ 
    return points - (points = 0); 
} 

返回5 0

+0

這是行不通的,因爲在評估過程中按照優先順序丟失點的值。它等於'return 0 - 0;',這不符合問題。 – lee