我想設置一個限制爲我在Java中使用的int
值。我正在創建一個簡單的醫療系統,我希望我的健康狀況保持在0到100之間。我該怎麼做?設置限制爲一個int值
回答
我建議你創建一個名爲衛生級和您檢查每一個時間,如果新的值設置,如果它滿足約束條件:
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;
}
}
}
謝謝,它完全解決了這個問題我想了。 (無法點擊接受按鈕,必須再等6分鐘。) – Stan 2011-04-21 19:28:46
'IllegalArgumentException'就是您通常想要用於這樣的非法參數。對遊戲中要做的事情進行建模的方法(例如添加或移除X健康而不超出邊界)對於這樣的課程也是關鍵。 – ColinD 2011-04-21 19:32:29
是的,您也可以使用IllegalArgumentException而不是定製的HelathException。 – RoflcoptrException 2011-04-21 19:33:53
封裝領域,並把支票setter方法。
int a;
void setA(int a){
if value not in range throw new IllegalArgumentException();
}
在Java中沒有辦法限制原語。你唯一能做的就是爲此編寫一個包裝類。當然,通過這樣做,您將失去良好的操作員支持,並且必須使用方法(如BigInteger
)。
使用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;
}
}
}
public void setHealth(int newHealth) {
if(newHealth >= 0 && newHealth <= 100) {
_health = newHealth;
}
}
我想創建一個強制執行的類。
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
這樣的方法,而不是直接設置健康狀況。
沒有意義創建一個特殊的類。 爲了增加i,使用這樣的:
公共無效specialIncrement(int i)以 { 如果(我< 100) 我++ }
這個問題應該如何回答? – RoflcoptrException 2011-04-21 19:37:21
沒有真正執行它,因爲它會很容易忘記和增加我沒有使用專用增量器。 – 2011-04-21 19:46:24
- 1. C#限制設置值
- 2. 將限制設置爲NSTextField
- 3. 設置一個值爲零
- 4. Int沒有值(將int設置爲無值)
- 5. 將cookie值設置爲遞增int
- 6. 如何設置爲int值null? Java Android
- 7. 熊貓:將字段值設置爲由字典值設置的限制
- 8. AngularJS指令 - 限制:'A'並將該指令設置爲一個值
- 9. 設置一個int指針等於一個普通的int
- 10. 在SQL中設置數字值限制
- 11. 如何設置限制價值 - jquery
- 12. ArrayList限制爲10個值
- 13. Elasticsearch設置限制
- 14. 設置OpenFileDialog限制
- 15. ASP.NET:設置一個十進制值Response.StatusCode
- 16. PHP添加int類型到另一個INT,但限制結果
- 17. 設置值爲二進制
- 18. 是否可以使用按位運算來限制int值(設置範圍)?
- 19. 將Color設置爲用於setRGB(int x,int y,int rgb)方法的int值? - Java
- 20. SetUnion:設置<int>×設置<int>→設置<int>
- 21. 有沒有一種方法來設置一個int爲001
- 22. 有沒有辦法在Python中設置int的限制3
- 23. 如何設置IBInspectable Int的最大限制
- 24. 置換程序中的int限制(C++)
- 25. Android爲繪圖類設置限制
- 26. 設置限制爲雄辯關係
- 27. WP-Polls將IP限制設置爲2
- 28. 設置人爲內存限制
- 29. 爲DB查詢設置時間限制
- 30. 將限制整數設置爲JTextField
爲什麼你需要設置一個限制? – Ishmael 2011-04-21 19:21:58
我不希望自己的健康狀態低於0或高於100. – Stan 2011-04-21 19:23:21
我猜你想要的東西比'yourInt = Math.max(yourInt,100)'更復雜一些;',請你詳細說明一下在這個問題上再多一點? – Aleadam 2011-04-21 19:24:28