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");


 }


}



时间: 原作者:

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);


.. .



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

原作者:
...