【问题标题】:Return the larger value in the in the given range返回给定范围内较大的值
【发布时间】:2020-10-12 01:13:24
【问题描述】:

当我在 Coding bat 上练习时,我遇到了这个问题,我被困住了。 给定两个正整数值,返回 10...20(含)范围内的较大值,如果两者都不在该范围内,则返回 0。 max1020(11,19)--> 19

max1020(19,11)--> 19

max1020(11,9)--> 11

你能帮我解决我的解决方案出了什么问题吗:-

public int max1020(int a, int b) {
  if((a>=10&&a<=20)||(b>=10&&b<=20)){
    int max;
    if(a>b){
      max=a;
    }else{
      max=b;
    }
    return max;
  }
  return 0;
}

【问题讨论】:

    标签: java if-statement operators


    【解决方案1】:

    您没有处理较小的数字在 10 到 20 范围内的情况,但较高的数字超出了该范围。在这种情况下,您应该返回较小的数字,但您返回的数字较大,超出了范围。

    当您的if((a&gt;=10&amp;&amp;a&lt;=20)||(b&gt;=10&amp;&amp;b&lt;=20)) 条件为真时,有 3 种可能性:

    1. a 和 b 都在 10 到 20 之间,在这种情况下,您应该返回其中较大的值
    2. 只有 a 介于 10 和 20 之间,在这种情况下,您应该返回 a(即使 b 更高)
    3. 只有 b 介于 10 和 20 之间,在这种情况下您应该返回 b(即使 a 更高)

    你可以这样写:

    public int max1020(int a, int b) {
      if (a >= 10 && a <= 20) {
          if (b >= 10 && b <= 20) {
              return a > b ? a : b;
          } else {
              return a;
          }
       } else {
          if (b >= 10 && b <= 20)) {
              return b;
          } else {
              return 0;
          }
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-27
      • 1970-01-01
      相关资源
      最近更新 更多