public static void main(String args[]) {
Scanner keyboard = new Scanner(System.in);
int hankees, socks;
out.print("Hankees and Socks scores? ");
hankees = keyboard.nextInt();
socks = keyboard.nextInt();
out.println();
if (hankees > socks) {
out.println("Hankees win...");
out.print("Hankees: ");
out.println(hankees);
out.print("Socks: ");
out.println(socks);
} else {
out.println("It's a tie...");
out.print("Hankees: ");
out.println(hankees);
out.print("Socks: ");
out.println(socks);
}
if (socks > hankees) {
out.println("Socks win...");
out.print("Socks: ");
out.println(socks);
out.print("Hankees: ");
out.println(hankees);
}
keyboard.close();
}
}
我是Java的新手,但我注意到,如果满足条件,Java代码往往会被执行,而不管后面的代码如何。 所以在这里我期望执行else代码(在socks> hankees的情况下) 但是适当考虑了后面的if语句。 如果有人能解释原因,我将非常感激。
编辑: 这是一本书中的代码,最初的格式是每个人都指出的方式(if-> else if-> else)。
我只是改变了一些事情,我遇到了一些令人困惑的结果。 随着改变的代码(第一个代码发布)当我输入10个hankees和90个袜子时,我得到的结果就是这个。
Hankees和Socks得分? 10 90袜子赢了...... 袜子:90 汉克斯:10
好像else语句没有被执行(因为在最后一个if语句之前满足条件,我确实会执行它)
我的问题是:为什么它没有被执行?
答案 0 :(得分:0)
您的算法中存在一些错误。无论您使用if语句的编码语言都将从上到下进行处理。然后,在(socks> hankees)的情况下,将执行第一个else块代码,导致第一个if条件为假。然后第二个将是真的,所以第三个块代码也将被执行。
现在是使用else if
关键字的好时机。
if(hankees > socks){
//hankees won
}
else if(hankees == socks){
//it's a tie
}
else{
//socks won
}
答案 1 :(得分:0)
当我运行时,我得到了结果:
It's a tie...
Hankees: 10
Socks: 90
Socks win...
Socks: 90
Hankees: 10
所以要回答你的问题,else语句应该并且确实运行。如果您没有获得"那么您必须拥有与此处发布的代码略有不同的代码......"一部分。
答案 2 :(得分:0)
然后你的else statemnet应该是第一个语句,然后是“if condition”,或者你可以添加一个while循环。