我想设置一个限制为我在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