Java 编码bat预热时遇到问题:max1020

Java 编码bat预热时遇到问题:max1020,java,Java,有人能帮我解决这个问题吗?我已经很接近了,但我不明白我做错了什么。我试图以不同的方式重新编写代码,并研究了解决方案。如果有人能解释这个问题,那就太好了。我对编码和Java非常陌生,所以如果解决方案显而易见,我很抱歉。这就是问题所在 给定2个正int值,返回10到20范围内的较大值,如果两者都不在该范围内,则返回0 max1020(11, 19) → 19 max1020(19, 11) → 19 max1020(11, 9) → 11 这是我的代码: public int max1020(

有人能帮我解决这个问题吗?我已经很接近了,但我不明白我做错了什么。我试图以不同的方式重新编写代码,并研究了解决方案。如果有人能解释这个问题,那就太好了。我对编码和Java非常陌生,所以如果解决方案显而易见,我很抱歉。这就是问题所在

给定2个正int值,返回10到20范围内的较大值,如果两者都不在该范围内,则返回0

max1020(11, 19) → 19

max1020(19, 11) → 19

max1020(11, 9) → 11
这是我的代码:

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

这里的问题是,如果两个值中的一个在范围内,您将返回最大值,并且您可以返回该范围内值的最大值

也就是说,在10和21之间,返回10,因为21,尽管更大,但超出范围

您可以更改您的功能,如下所示:

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


这里的问题是,如果两个值中的一个在范围内,您将返回最大值,并且您可以返回该范围内值的最大值

也就是说,在10和21之间,返回10,因为21,尽管更大,但超出范围

您可以更改您的功能,如下所示:

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


你似乎先算出最大值,然后-

 if((a<=20  &&  a>=10)||(b<=20 && b>=10)){
   return max;
 }

上述代码返回max,而不管max是否实际在该范围内

您似乎首先计算出最大值,然后-

 if((a<=20  &&  a>=10)||(b<=20 && b>=10)){
   return max;
 }

上述代码返回max,而不管max是否实际在该范围内

我将从实现您发布的测试工具开始,这是正确实现任何算法的非常有用的功能

public static void main(String[] args) {
    int[][][] testCases = { { { 11, 19 }, { 19 } }, //
            { { 19, 11 }, { 19 } }, //
            { { 11, 9 }, { 11 } }, //
            { { 9, 21 }, { 0 } }, //
            { { 10, 21 }, { 10 } }, //
            { { 21, 10 }, { 10 } }, //
            { { 9, 11 }, { 11 } }, //
            { { 23, 10 }, { 10 } }, //
            { { 20, 10 }, { 20 } }, //
            { { 7, 20 }, { 20 } }, //
            { { 17, 16 }, { 17 } } };
    for (int i = 0; i < testCases.length; i++) {
        int a = testCases[i][0][0], b = testCases[i][0][1], c = testCases[i][1][0];
        int r = max1020(a, b);
        System.out.printf("max1020(%d, %d) -> %d   %d %s%n", a, b, r, c, 
                c == r ? "OK" : "X");
    }
}
测试线束的哪个输出

max1020(11, 19) -> 19   19 OK
max1020(19, 11) -> 19   19 OK
max1020(11, 9) -> 11   11 OK
max1020(9, 21) -> 0   0 OK
max1020(10, 21) -> 10   10 OK
max1020(21, 10) -> 10   10 OK
max1020(9, 11) -> 11   11 OK
max1020(23, 10) -> 10   10 OK
max1020(20, 10) -> 20   20 OK
max1020(7, 20) -> 20   20 OK
max1020(17, 16) -> 17   17 OK

我将从实现您发布的测试工具开始,这是正确实现任何算法的非常有用的功能

public static void main(String[] args) {
    int[][][] testCases = { { { 11, 19 }, { 19 } }, //
            { { 19, 11 }, { 19 } }, //
            { { 11, 9 }, { 11 } }, //
            { { 9, 21 }, { 0 } }, //
            { { 10, 21 }, { 10 } }, //
            { { 21, 10 }, { 10 } }, //
            { { 9, 11 }, { 11 } }, //
            { { 23, 10 }, { 10 } }, //
            { { 20, 10 }, { 20 } }, //
            { { 7, 20 }, { 20 } }, //
            { { 17, 16 }, { 17 } } };
    for (int i = 0; i < testCases.length; i++) {
        int a = testCases[i][0][0], b = testCases[i][0][1], c = testCases[i][1][0];
        int r = max1020(a, b);
        System.out.printf("max1020(%d, %d) -> %d   %d %s%n", a, b, r, c, 
                c == r ? "OK" : "X");
    }
}
测试线束的哪个输出

max1020(11, 19) -> 19   19 OK
max1020(19, 11) -> 19   19 OK
max1020(11, 9) -> 11   11 OK
max1020(9, 21) -> 0   0 OK
max1020(10, 21) -> 10   10 OK
max1020(21, 10) -> 10   10 OK
max1020(9, 11) -> 11   11 OK
max1020(23, 10) -> 10   10 OK
max1020(20, 10) -> 20   20 OK
max1020(7, 20) -> 20   20 OK
max1020(17, 16) -> 17   17 OK
以下是我的解决方案:

public int max1020(int a, int b) {
  return ((a>=10 && a<=20) && (b>=10 && b<=20))?(b>a?b:a)
  :(a>=10 && a<=20)?a
  :(b>=10 && b<=20)?b
  :0;
}
以下是我的解决方案:

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

我的天啊!我的天啊!这可能行不通。你可以在这里测试你看不到链接吗?有趣的我现在明白了@是的!我修复了我的错误,上面的修复也应该可以。这可能不起作用。你可以在这里测试你看不到链接吗?有趣的我现在明白了@是的!我修复了我的错误,上面的修复程序也应该可以。