[英]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:
要求是:
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.