简体   繁体   English

使用 if else 语句扫描并打印奇数和偶数

[英]using if else statement to scan and print odd and even numbers

I am having a problem with this if else statement.我对这个 if else 语句有问题。 The requirement is:要求是:

  • If n is odd, print Weird如果 n 是奇数,则打印 Weird
  • If n is even and in the inclusive range of 2 to 5, print Not Weird如果 n 是偶数并且在 2 到 5 的包含范围内,则打印 Not Weird
  • If n is even and in the inclusive range of 6 to 20, print Weird如果 n 是偶数并且在 6 到 20 的包含范围内,则打印 Weird
  • If n is even and greater than 20, print Not Weird.如果 n 是偶数且大于 20,则打印 Not Weird。

When the input number is 18 the output is expected to be Weird.当输入数为18 时,输出预计为Weird。 Same for the input number 20 .输入编号20相同。

    import java.util.*;

public class Solution {
    public 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])?");

        scanner.close();

        String ans = "";

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

Edit: But when I input the number 18 instead of Weird the output comes as Not Weird.编辑:但是当我输入数字 18 而不是 Weird 时,输出显示为Not Weird。 , same for number 20. , 数字 20 相同。

Try this code.试试这个代码。

import java.util.*;

public class Solution {
    public 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])?");

        scanner.close();

        String ans = "";

        if ((N % 2) == 1) {
            ans += "Weird";
        } else {
            if (N <= 5) {
                ans += "Not Weird";
            } else if (N <= 20) {
                ans += "Weird";
            } else {
                ans += "Not Weird";
            }
        }
        System.out.println(ans);
    }
}

Using ternary operators, you can fulfil the criteria in just one line of code:使用三元运算符,您只需一行代码即可满足条件:

n % 2 != 0 ? "Weird"
                : (n >= 2 && n <= 5 ? "Not Weird" : (n >= 6 && n <= 20 ? "Weird" : (n > 20 ? "Not Weird" : "")))

Demo:演示:

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Main {
    public static void main(String[] args) {
        // Create a list of test integers from 1 to 25
        List<Integer> testNumbers = IntStream.rangeClosed(1, 25).boxed().collect(Collectors.toList());
        for (int n : testNumbers) {
            System.out.println(n + " -> " + whatIsIt(n));
        }
    }

    static String whatIsIt(int n) {
        return n % 2 != 0 ? "Weird"
                : (n >= 2 && n <= 5 ? "Not Weird" : (n >= 6 && n <= 20 ? "Weird" : (n > 20 ? "Not Weird" : "")));
    }
}

Output:输出:

1 -> Weird
2 -> Not Weird
3 -> Weird
4 -> Not Weird
5 -> Weird
6 -> Weird
7 -> Weird
8 -> Weird
9 -> Weird
10 -> Weird
11 -> Weird
12 -> Weird
13 -> Weird
14 -> Weird
15 -> Weird
16 -> Weird
17 -> Weird
18 -> Weird
19 -> Weird
20 -> Weird
21 -> Weird
22 -> Not Weird
23 -> Weird
24 -> Not Weird
25 -> Weird

Feel free to comment in case of any doubt/issue.如有任何疑问/问题,请随时发表评论。

Since you're printing ans in every possible case, it can be outside of the if statements.由于您在所有可能的情况下都打印 ans,因此它可以在 if 语句之外。


if ((N % 2) == 1) {
    ans += "Weird";
}
else { //We know N is not odd, so it must be even
    if (N <= 5) {
        ans += "Not Weird";
    }
    else if (N <= 20) { //We know N<=5 is false, so N>5 must be true
        ans += "Weird";
    }
    else{ //we know N<=20 is false, so N >20 must be true
        ans += "Not Weird";
    }
}
System.out.println(ans);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM