Java HackerRank 中的 If-Else,我的代码好还是我能找到更好的问题解决方案
Java If-Else in HackerRank, Is my code good or can I get better solution for the problem
问题陈述
任务
给定一个整数 n,执行以下条件操作:
如果 n 是奇数,打印 Weird
如果 n 是偶数且在 2 到 5 的范围内,则打印 Not Weird
如果 n 是偶数并且在 6 到 20 的范围内,则打印 Weird
如果 n 是偶数且大于 20,则打印 Not Weird
完成编辑器中提供的存根代码以打印 n 是否奇怪。
输入格式
单行包含一个正整数,n。
约束条件
1<=n<=100
输出格式
如果数字很奇怪就打印Weird;否则,打印 Not Weird.
示例输入 0
3
示例输出 0
奇怪
示例输入 1
24
示例输出 1
不奇怪
说明
示例案例 0:n=3
n 是奇数,奇数很奇怪,所以我们打印 Weird.
示例案例 1:n=24
n>20 并且 n 是偶数,所以这并不奇怪。因此,我们打印 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();
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();
}
}
我可以得到有关解决方案的建议吗?谢谢。
应该合并的条件:对于6 <= n <= 20
范围内的任意数字结果为Weird
OR n为奇数,否则为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");
if (~N % 2 == 0 || N <= 20 && N >= 6) {
System.out.println("Weird");
} else if (N % 2 == 0 && N > 20 || (N >= 2 && 5 <= N)) {
System.out.println("not Weird");
}
问题陈述
任务
给定一个整数 n,执行以下条件操作:
如果 n 是奇数,打印 Weird 如果 n 是偶数且在 2 到 5 的范围内,则打印 Not Weird 如果 n 是偶数并且在 6 到 20 的范围内,则打印 Weird 如果 n 是偶数且大于 20,则打印 Not Weird 完成编辑器中提供的存根代码以打印 n 是否奇怪。
输入格式
单行包含一个正整数,n。
约束条件
1<=n<=100
输出格式
如果数字很奇怪就打印Weird;否则,打印 Not Weird.
示例输入 0
3
示例输出 0
奇怪
示例输入 1
24
示例输出 1
不奇怪
说明
示例案例 0:n=3 n 是奇数,奇数很奇怪,所以我们打印 Weird.
示例案例 1:n=24 n>20 并且 n 是偶数,所以这并不奇怪。因此,我们打印 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();
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();
}
}
我可以得到有关解决方案的建议吗?谢谢。
应该合并的条件:对于6 <= n <= 20
范围内的任意数字结果为Weird
OR n为奇数,否则为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");
if (~N % 2 == 0 || N <= 20 && N >= 6) {
System.out.println("Weird");
} else if (N % 2 == 0 && N > 20 || (N >= 2 && 5 <= N)) {
System.out.println("not Weird");
}