javaif-statementconditional-operatornlp-question-answeringcontrol-statements

Java If-Else in HackerRank, Is my code good or can I get better solution for the problem


Problem Statement

Task

Given an integer,n, perform the following conditional actions:

If n is odd, print Weird If n is even and in the inclusive range of 2 to 5, print Not Weird If n is even and in the inclusive range of 6 to 20, print Weird If n is even and greater than 20, print Not Weird Complete the stub code provided in your editor to print whether or not n is weird.

Input Format

A single line containing a positive integer,n.

Constraints

1<=n<=100

Output Format

Print Weird if the number is weird; otherwise, print Not Weird.

Sample Input 0

3

Sample Output 0

Weird

Sample Input 1

24

Sample Output 1

Not Weird

Explanation

Sample Case 0: n=3 n is odd and odd numbers are weird, so we print Weird.

Sample Case 1: n=24 n>20 and n is even, so it isn't weird. Thus, we print Not Weird.

My solution to the problem.

import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;

public class Solution {



    private static final Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        int N = scanner.nextInt();
        scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");
        if(N%2==0){
            if(N>1){
                if(N<6){
                    System.out.println("Not Weird");
                }
                else if(N<21){
                    System.out.println("Weird");
                }
                else{
                    System.out.println("Not Weird");
                }
            }
        }
        else{
            System.out.println("Weird");
        }

        scanner.close();
    }
}

Can I get suggestions regarding the solution. Thank You.


Solution

  • The conditions should be merged: the result is Weird for any number in the range 6 <= n <= 20 OR n is odd, otherwise it is Not Weird:

    System.out.println((6 <= n && n <= 20 || n % 2 != 0) ? "Weird" : "Not Weird");
    // or
    System.out.println((5 < n && n < 21 || n % 2 != 0) ? "Weird" : "Not Weird");