我正在努力做到这一挑战https://www.hackerrank.com/challenges/java-if-else
我试过这样做:
public class Main {
public static void main(String[] args) {
int x;
x = 34;
if ((x % 2) != 0) {
System.out.println("Weird");
} else if (((x % 2 == 0) & ((x >= 2) & (5 >= x)))) {
System.out.println("Not Weird");
} else if (((x % 2 == 0) & ((x >= 6) & (20 >= x)))) {
System.out.println("Weird");
} else if ((x % 2 == 0) & (x > 20)) {
System.out.println("Not Weird");
}
}
}
我在Intellij中运行它并且它工作正常,但在这里,我只得到三个测试用例。我究竟做错了什么?我对扫描仪的东西感到不知所措,因为在我自己的阅读中我还没有覆盖那些东西。
答案 0 :(得分:2)
HackerRank挑战,我做错了什么?
您没有从标准输入中读取数字,因此测试都是检查数字34的输出。
替换
int x;
x = 34;
有了这个(这是测试的开始)
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
这样做,你的测试顺利通过。
替代解决方案
boolean even = x % 2 == 0;
boolean weird = !even || (even && (6 <= x && x <= 20));
System.out.println(weird ? "Weird" : "Not Weird");
答案 1 :(得分:1)
你应该使用&amp;&amp;作为条件运算符。你也不需要if语句检查它是否是偶数,因为在他们的代码中提供的第一个if语句已经检查它是否是奇数。如果它不是(只有其他选项是偶数),则转到else语句。下面列出了优雅的解决方案。
扫描仪只是传入的内容,不用担心它,只需使用值n,它们就会将值传递给代码。
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String ans="";
if(n%2==1){ // only if it's odd
ans = "Weird";
}
// only enters else if the value is even
else{
if (n >= 6 && n <= 20) { // between 6 and 20
ans = "Weird";
} else { // only other option is greater than 20
// or below 6 which includes 2 through 5
ans = "Not Weird";
}
}
System.out.println(ans);
}
编辑:看到他的范围是非传统的顺序,所以很好。不确定以前出了什么问题。
答案 2 :(得分:0)
以上答案更好^^
我无法发表评论(代表太低),但您不需要在第一次检查后检查它是否均匀。你可以假设,如果它不是奇数,那么它是偶数。
编写代码的更简单/更简单的方法是:
function Product(naam, aantal) {
var self = this;
self.naam = naam;
self.aantal = aantal;
}
function komaan() {
var self = this;
self.lijst = ko.observableArray([
new Product("Flesje Tonic", 6),
new Product("Gin", 6)
]);
}
ko.applyBindings(new komaan());
不使用&#34;等于&#34;运营商和更改您的订单&#34;少于&#34;你可以解决你的问题。
答案 3 :(得分:0)
您的代码没问题,已经通过了HackerRank测试,在其他地方:
if ((n % 2 == 0) & ((n >= 2) & (5 >= n)))
System.out.println("Not Weird");
if ((n % 2 == 0) & ((n >= 6) & (20 >= n)))
System.out.println("Weird");
if ((n % 2 == 0) & (n > 20))
System.out.println("Not Weird");
刚刚更改为“else if”到“if”。