【问题标题】:Prevent values going outside a specified range防止值超出指定范围
【发布时间】:2015-01-09 19:23:22
【问题描述】:
private int currentSpeed;
private static final int MAXIMUM_SPEED = 100;
private int heading;

int speedUp(int increaseBy) {

    currentSpeed += increaseBy;

    return currentSpeed;
}

int slowDown(int decreaseBy) {

    currentSpeed -= decreaseBy;

    return currentSpeed;
}

如何防止 currentSpeed 的值在 speedUp 方法中超过 MAXIMUM_VALUE 变量,以及在不使用 if 语句的情况下在 slowDown 方法中降至 0 以下。我相信使用 Math.min 和 Math.max 会起作用,但我不确定如何实施。

【问题讨论】:

    标签: java math max min


    【解决方案1】:

    如下使用Math.max和Math.min:

    int speedUp(int increaseBy) {
        currentSpeed = Math.min(currentSpeed + increaseBy,MAXIMUM_SPEED);
        return currentSpeed;
    }
    
    int slowDown(int decreaseBy) {
        currentSpeed = Math.max(currentSpeed - decreaseBy,0);
        return currentSpeed;
    }
    

    【讨论】:

      【解决方案2】:

      你应该可以使用ternary operator

      int speedUp(int increaseBy) {
          currentSpeed = currentSpeed + increaseBy < MAXIMUM_SPEED ? currentSpeed += increaseBy : MAXIMUM_SPEED;
          return currentSpeed;
      }
      
      int slowDown(int decreaseBy) {
          currentSpeed = currentSpeed - decreaseBy > 0 ? currentSpeed -= decreaseBy : 0;
          return currentSpeed;
      }
      

      【讨论】:

      • Integer.MAX_VALUE - 在这里不起作用。应该是MAXIMUM_SPEED。
      猜你喜欢
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 2019-06-17
      • 1970-01-01
      • 2017-06-20
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      相关资源
      最近更新 更多