Java 为什么不管我的if语句是否为true,我的else if语句都会运行

Java 为什么不管我的if语句是否为true,我的else if语句都会运行,java,if-statement,Java,If Statement,所以我正在用java做一个井字游戏。它的工作原理是询问用户您要在哪个空间上播放,然后在一大行if语句中找到该空间,然后将与该数字对应的布尔值更新为true,以便计算机知道该空间是否已经播放过。声明看起来像这样 if (choiceone.equalsIgnoreCase("1") || choiceone.equalsIgnoreCase("one")) {//Player 1 Choose "One" if (bone == false) {

所以我正在用java做一个井字游戏。它的工作原理是询问用户您要在哪个空间上播放,然后在一大行if语句中找到该空间,然后将与该数字对应的布尔值更新为true,以便计算机知道该空间是否已经播放过。声明看起来像这样

if (choiceone.equalsIgnoreCase("1") || choiceone.equalsIgnoreCase("one"))
    {//Player 1 Choose "One"
        if (bone == false)
        {
            bone = true;
            p1t = false;
            p2t = true;

            one = "X ";

            System.out.println("BOARD--------");
            System.out.println(one + two + three);
            System.out.println(four + five + six);
            System.out.println(seven + eight + nine);
            System.out.println("BOARD--------");
        }
        else if (bone == true)
        {
            System.out.println("That space has allready been used. Turn Wasted");
            p1t = false;
            p2t = true;
            System.out.println("BOARD--------");
            System.out.println(one + two + three);
            System.out.println(four + five + six);
            System.out.println(seven + eight + nine);
            System.out.println("BOARD--------");
        }
    }//Player 1 Choose "One"
变量列表:

bone=用于检测空间1的布尔值,如果为真,则为假

p1t=布尔检测是否轮到玩家1

p2t=布尔检测是否轮到玩家2

一=船上的空间(二、三、四等也是如此)

choiceone=玩家1选择的空间

现在想象一下,玩家1多了8个,玩家2多了9个,你基本上得到了我的全部代码。我会给你看我所有的代码,但它有600多行代码。不管怎样,当我运行它时,它运行第一个if语句,但是它也运行第二个else if语句,不管它是“else if”语句。如果有人知道为什么会这样,我很乐意知道


谢谢

你所描述的不会发生。您必须运行此代码两次。您是否绝对确定您描述的是实际发生的情况?我这样问是因为Java在第一次匹配后退出了if块。也许您看到的是错误的复制粘贴作业的结果。简言之,我建议寻找另一个根本原因:)注意,当bone是基本类型布尔值时,else if语句是多余的。请注意,de System.out.println在这两种情况下都是相同的。如果将这些行移到If/else语句下面,则会减少行数,因此可读性会提高。