Coverage of all scripts using the if statement

I am doing the following home exercise:

Given 2 int values ​​greater than 0, return any value closest to 21 not passing. Return 0 if they both go over.

I made the code below:

public static void main(String[] args) {
    System.out.println(blackjack(22,22));
    System.out.println(blackjack(25,25));
    System.out.println(blackjack(19,25));
    System.out.println(blackjack(25,19));
    System.out.println(blackjack(10,10));
    System.out.println(blackjack(19,10));
    System.out.println(blackjack(1,19));
}

// Create a method like:
public static int blackjack(int a, int b) {
    if (a > 21 && b > 21) {
        return 0;
    }
    else if (a <= 21 || b > 21) {
        return a;
    }
    else if (a > 21 || b <= 21) {
        return b;
    }
    else if (a >= b) {
        return a;
    }
    else {
        return b;
    }
}

All this works, except for the last line of output in my main. I keep getting "a" or "1" in this case, so I'm not sure what is wrong with my last line in the method declaration. I feel that something is wrong, but I'm not sure what to change.

+4
source share
7 answers

Try the following:

public static int blackjack(int a, int b){
    if ( a > 21 && b > 21){
        return 0;
    }
    else if ( a <= 21 && b > 21){
        return a;
    }
    else if ( a > 21 && b <= 21){
        return b;
    }
    else if ( a >= b){
        return a;
    }
    else {
        return b;
    }

}
+1
source

if-, :

private static final int TARGET = 21;
public static void main (String[] args) throws java.lang.Exception {
    System.out.println(blackjack(22,22)); //  0
    System.out.println(blackjack(25,25)); //  0
    System.out.println(blackjack(19,25)); // 19
    System.out.println(blackjack(25,19)); // 19
    System.out.println(blackjack(10,10)); // 10
    System.out.println(blackjack(19,10)); // 19
    System.out.println(blackjack(1,19));  // 19
}

public static int blackjack(int a, int b) {
    if ( a > TARGET && b > TARGET) {
        return 0;
    }

    return Math.abs(a - TARGET) < Math.abs(b - TARGET) 
       ? a 
       : b;
}

. , 21 MAX_INT; , . , , .

Ideone

+4

- a <= 21 || b > 21. "" (||), , , , . I.e., a 21, a b. .

|| &&:

if ( a > 21 && b > 21) {
    return 0;
}
else if ( a <= 21 && b > 21){
    return a;
}
else if ( a > 21 && b <= 21){
    return b;
}
else if ( a >= b){
    return a;
}
else {
    return b;
}
+3

|| &&:

    if ( a > 21 && b > 21){
        return 0;
    }
    else if ( a <= 21 && b > 21){
        return a;
    }
    else if ( a > 21 && b <= 21){
        return b;
    }
    else if ( a >= b){

"a", a, b < 22

+2

|| (OR), && () a <= 21 || b > 21 a > 21 || b <= 21

NB: , > 21, : b > 21 a > 21 .

+1

- . if.

public static int blackjack(int a, int b){
    int min = Math.min(a, b);
    int max = Math.max(a, b);
    if (max <= 21) {
        return max;
    } else {
        return min <= 21? min: 0;
    }
}
0

    public static int blackjack(int a,int b){
      if(a>21){return (b<21)?b:0;}else{
      if(b>21){return a;}else{return (a<b)?b:a;} 
      }
      }

public static void main(String[] args) {

      System.out.println(blackjack(21, 21));    
      System.out.println(blackjack(28, 28));    
      System.out.println(blackjack(17, 18));    

}
0

Source: https://habr.com/ru/post/1569133/


All Articles