Conditional Statement on Java7

橙三吉。 提交于 2019-12-13 11:30:00

问题


Hello i just started a coding exercise on hackerrank and i am having a little challenge using scanner class with the skip function. here is what i have tried. Objective In this challenge, we're getting started with conditional statements. Check out the Tutorial tab for learning materials and an instructional video!

Task

Given an integer, 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

Output Format

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

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();

        if (N % 2 == 0 && N >= 2 && N <= 5 && N > 20) {
            System.out.println("not weird");

        } else if (N % 2 == 0 && N >= 6 && N <= 20) {
            System.out.println("weird");
        } else {
            System.out.println("weird");
        }

        scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");


        scanner.close();
    }
}

Please what am i doing wrong.


回答1:


You're mixing up && and ||, so your first if will never run as mentioned in the comments.

So it looks like the only "Not Weird" print out is 2, 4 and even numbers > 20.

So use this to your advantage to just check for the "Weird" outputs, otherwise print "Not Weird".

if (n % 2 == 0) {
    if ((n >= 2 && n <= 5) || (n > 20)) {
        return "Not Weird";
    }
}
return "Weird";

Online Demo

Having said this, I'm not sure what you want with Scanner::skip




回答2:


This is how I simplified it.

    if(N % 2 == 0 )
    {            
        if((N >= 2 && N <= 5) || N > 20)
        {
            System.out.println("Not Weird");
        }
        else
        {
            System.out.println("Weird");
        }    
    }
    else
    {
        System.out.println("Weird");
    }



回答3:


See code below

int N = scanner.nextInt();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

if ((N % 2 == 0 && N >= 2 && N <= 5) || N > 20) {
    System.out.println("Not Weird");

} else if (N % 2 == 0 && N >= 6 && N <= 20) {
    System.out.println("Weird");
} 
else 
{
    System.out.println("Weird");
}


来源:https://stackoverflow.com/questions/52645699/conditional-statement-on-java7

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!