java - java多个条件/如果语句不正确?

  显示原文与译文双语对照的内容
109 5

我正在做一个hackernet挑战,其中n 是一个int输入。条件如下:

  • 如果n 是奇数,打印奇数
  • 如果n 是偶数,在包含范围 2到 5之间,则打印不奇怪
  • 如果n 为偶数,在包含范围 6到 20之间,则打印奇数
  • 如果n 甚至 GREATER 大于 20,则打印不奇怪。

我确信代码是逻辑的,而不认为有语法。它给出了正确的响应,hackernet仍然说它不正确所以我来看看是否有人能看到这个问题是什么

public static void main(String[] args)
{
 int N = scanner.nextInt();
 scanner.skip("(rn|[nru2028u2029u0085])?");
 if (N % 2!= 0 || N % 2 == 0 && N> = 6 && N <= 20)
 {
 System.out.print("weird");
 }
 else
 {
 System.out.print("not weird");
 }
}
时间:原作者:0个回答

72 2

问题是 else 条件中的逻辑,它也会捕获 N 小于 2的值。试用这里版本:

if (N % 2!= 0)
{
 System.out.print("weird");
}
else if (N> = 2 && N <= 5 || N> 20)
{
 System.out.print("not weird");
}
else if (N> = 6 && N <= 20)
{
 System.out.print("weird");
}
else
{
//NOTE: if the code still fails, remove this else condition
 System.out.print("unexpected value of N");
}

注意:要让代码通过Hackernet任务,你可能必须完全删除 else 条件。为了保证完整性,我添加了它,但是Hackernet可能会测试 N=1 是否。

原作者:
113 5

阅读以下条件:

if (N % 2!= 0 || N % 2 == 0 && N> = 6 && N <= 20)

作为

if (N % 2!= 0 || (N % 2 == 0 && N> = 6 && N <= 20))

然后看看操作符优先级如何改变行为和产生期望结果。

原作者:
66 5

你可以试试

 private static final Scanner scanner = new Scanner(System.in);
 public static void main(String[] args) {
 String ans ="";
 int n = scanner.nextInt();
 scanner.skip("(rn|[nru2028u2029u0085])?");
 if (n % 2 == 1 || (n> = 6 && n <= 20)) {
 ans ="Weird";
 } else {
 ans ="Not Weird";
 }
 System.out.println(ans);
 scanner.close();
 }
原作者:
125 0

检查下列内容

public static void main(String[] args)
 {
 int N = scanner.nextInt();
 scanner.skip("(rn|[nru2028u2029u0085])?");
 if(N%2!=0) {
 System.out.print("weird"); 
 }else if(N>=2 && N<=5) {
 System.out.print("not weird");
 }else if(N>=6 && N<=20) {
 System.out.print("weird");
 }else if(N>20) {
 System.out.print("not weird");
 }
 }
原作者:
148 3

对于技术部分:先阅读关于java运算符的优先级,然后让你的代码易于阅读。

将许多条件推到一个single如果 helpful 。你自己看看:你认为代码是正确的,但它可能不是。现在你要向别人解释你过于复杂的代码。当然,所有其他的答案都是为你做的。但更重要的是:

"真实"答案如下:了解如何为你的代码提供

不要有一个主要的问题,然后做出决定,然后编写一个方法 boolean isWeird(),并根据需要返回 true/false 。

然后简单的说,用所有合理的案例来检验这个方法。然后检查结果是否符合预期。

使用 JUnit,你可以编写类似

 assertThat(isWeird(1), true);
 assertThat(isWeird(21), true);
 assertThat(isWeird(22), true);
.. .

理想情况下,在执行该方法之前,你要将这些。然后你实施所有的条件,任何失败的检查告诉你你有错误的东西。

原作者:
...