在else语句满足其要求后如何执行if语句?

时间:2017-03-01 02:04:20

标签: java if-statement

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语句之前满足条件,我确实会执行它)

我的问题是:为什么它没有被执行?

3 个答案:

答案 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循环。