2011-04-21 69 views
3

我想設置一個限制爲我在Java中使用的int值。我正在創建一個簡單的醫療系統,我希望我的健康狀況保持在0到100之間。我該怎麼做?設置限制爲一個int值

+0

爲什麼你需要設置一個限制? – Ishmael 2011-04-21 19:21:58

+0

我不希望自己的健康狀態低於0或高於100. – Stan 2011-04-21 19:23:21

+1

我猜你想要的東西比'yourInt = Math.max(yourInt,100)'更復雜一些;',請你詳細說明一下在這個問題上再多一點? – Aleadam 2011-04-21 19:24:28

回答

12

我建議你創建一個名爲衛生級和您檢查每一個時間,如果新的值設置,如果它滿足約束條件:

public class Health { 

    private int value; 

    public Health(int value) { 
     if (value < 0 || value > 100) { 
     throw new IllegalArgumentException(); 
     } else { 
     this.value = value; 
     } 
    } 

    public int getHealthValue() { 
     return value; 
    } 


    public void setHealthValue(int newValue) { 
    if (newValue < 0 || newValue > 100) { 
     throw new IllegalArgumentException(); 
     } else { 
     value = newValue; 
    } 
    } 

} 
+0

謝謝,它完全解決了這個問題我想了。 (無法點擊接受按鈕,必須再等6分鐘。) – Stan 2011-04-21 19:28:46

+1

'IllegalArgumentException'就是您通常想要用於這樣的非法參數。對遊戲中要做的事情進行建模的方法(例如添加或移除X健康而不超出邊界)對於這樣的課程也是關鍵。 – ColinD 2011-04-21 19:32:29

+0

是的,您也可以使用IllegalArgumentException而不是定製的HelathException。 – RoflcoptrException 2011-04-21 19:33:53

1

封裝領域,並把支票setter方法。

int a; 

void setA(int a){ 
    if value not in range throw new IllegalArgumentException(); 
} 
0

在Java中沒有辦法限制原語。你唯一能做的就是爲此編寫一個包裝類。當然,通過這樣做,您將失去良好的操作員支持,並且必須使用方法(如BigInteger)。

4

使用getter/setter模型。

public class MyClass{ 
    private int health; 

    public int getHealth(){ 
     return this.health; 
    } 

    public int setHealth(int health){ 
     if(health < 0 || health > 100){ 
      throw new IllegalArgumentException("Health must be between 0 and 100, inclusive"); 
     }else{ 
      this.health = health; 
     } 
    } 
} 
0
public void setHealth(int newHealth) { 
    if(newHealth >= 0 && newHealth <= 100) { 
    _health = newHealth; 
    } 
} 
3

我想創建一個強制執行的類。

public class Health { 
    private int health = 100; 

    public int getHealth() { 
    return health; 
    } 

    // use this for gaining health 
    public void addHealth(int amount) { 
    health = Math.min(health + amount, 100); 
    } 

    // use this for taking damage, etc. 
    public void removeHealth(int amount) { 
    health = Math.max(health - amount, 0); 
    } 

    // use this when you need to set a specific health amount for some reason 
    public void setHealth(int health) { 
    if (health < 0 || health > 100) 
     throw new IllegalArgumentException("Health must be in the range 0-100: " + health); 
    this.health = health; 
    } 
} 

這樣,如果你有Health一個實例,你知道一個事實,即它代表健康的有效量。我想你通常只想使用像addHealth這樣的方法,而不是直接設置健康狀況。

-3

沒有意義創建一個特殊的類。 爲了增加i,使用這樣的:

公共無效specialIncrement(int i)以 { 如果(我< 100) 我++ }

+0

這個問題應該如何回答? – RoflcoptrException 2011-04-21 19:37:21

+0

沒有真正執行它,因爲它會很容易忘記和增加我沒有使用專用增量器。 – 2011-04-21 19:46:24