簡體   English   中英

使用 if else 語句掃描並打印奇數和偶數

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

我對這個 if else 語句有問題。 要求是:

  • 如果 n 是奇數,則打印 Weird
  • 如果 n 是偶數並且在 2 到 5 的包含范圍內,則打印 Not Weird
  • 如果 n 是偶數並且在 6 到 20 的包含范圍內,則打印 Weird
  • 如果 n 是偶數且大於 20,則打印 Not Weird。

當輸入數為18 時,輸出預計為Weird。 輸入編號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);
            }
        }
    }
}

編輯:但是當我輸入數字 18 而不是 Weird 時,輸出顯示為Not Weird。 , 數字 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";
        } else {
            if (N <= 5) {
                ans += "Not Weird";
            } else if (N <= 20) {
                ans += "Weird";
            } else {
                ans += "Not Weird";
            }
        }
        System.out.println(ans);
    }
}

使用三元運算符,您只需一行代碼即可滿足條件:

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

演示:

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" : "")));
    }
}

輸出:

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

如有任何疑問/問題,請隨時發表評論。

由於您在所有可能的情況下都打印 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