[英]using if else statement to scan and print odd and even numbers
我對這個 if else 語句有問題。 要求是:
當輸入數為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.