【问题标题】:Java If-Else in HackerRank, Is my code good or can I get better solution for the problemHackerRank 中的 Java If-Else,我的代码好还是我能得到更好的问题解决方案
【发布时间】:2021-06-05 16:37:53
【问题描述】:

问题陈述

任务

给定一个整数n,执行以下条件动作:

如果 n 是奇数,打印 Weird 如果 n 是偶数并且在 2 到 5 的范围内,则打印 Not Weird 如果 n 是偶数并且在 6 到 20 的范围内,则打印 Weird 如果 n 是偶数且大于 20,则打印 Not Weird 完成编辑器中提供的存根代码以打印 n 是否奇怪。

输入格式

一行包含一个正整数n。

约束

1

输出格式

如果数字很奇怪,则打印 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();
    }
}

我能否获得有关解决方案的建议。谢谢。

【问题讨论】:

  • 如果代码按预期工作,它可能更适合codereview.stackexchange.com
  • 重新定义需求将为您提供更短的代码。想想这两个“不奇怪”的条件是如何都属于同一个检查的,以及[6, 20] 如何包含该域中的唯一区别
  • HackerRank 上每个问题的答案部分也有大量清晰的解释。有时问题本身也会有一个标签来解释不同的方法,尽管可能会有付费墙。

标签: java if-statement conditional-operator question-answering control-statements


【解决方案1】:

条件应合并:6 &lt;= n &lt;= 20 范围内的任意数的结果为Weird 或 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");

【讨论】:

  • 实际上,我的代码输出错误。由于 N 为偶数是必要条件,因此只有我们可以检查范围。这是问题链接,您可以尝试并提供更好的代码。 hackerrank.com/challenges/java-if-else/problem
  • 你可能运行了一个有错字的代码,我把它删掉了。
  • 哦,是的,谢谢。现在我得到了正确的答案。以前我写过这个 System.out.println((5
  • System.out.println((6
  • &lt; 21 更短,除了整数没有区别
猜你喜欢
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 2013-04-30
  • 2017-02-17
  • 2016-12-29
  • 2015-10-20
  • 2022-06-28
相关资源
最近更新 更多