设置int值的限制

时间:2011-04-21 19:20:10

标签: java math int limit

我想设置Java中int值的限制。我正在创建一个简单的健康系统,我希望我的健康状况保持在0到100之间。我该怎么做?

7 个答案:

答案 0 :(得分:12)

我建议您创建一个名为Health的类,如果满足约束条件,则每次都检查是否设置了新值:

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

}

答案 1 :(得分: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;
        }
    }
}

答案 2 :(得分: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 :(得分:1)

封装字段并检查setter方法。

int a;

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

答案 4 :(得分:0)

无法限制Java中的原语。你唯一能做的就是为此编写一个包装类。当然,通过这样做,您将失去良好的操作员支持,并且必须使用方法(如BigInteger)。

答案 5 :(得分:0)

public void setHealth(int newHealth) {
  if(newHealth >= 0 && newHealth <= 100) {
    _health = newHealth;
  }
}

答案 6 :(得分:-3)

创建特殊类没有意义。 要增加i,请使用:

public void specialIncrement(int i) {    如果(I&LT; 100)       我++ }