Java在.equals语句上“跳过”

Java在.equals语句上“跳过”,java,string,if-statement,equals,Java,String,If Statement,Equals,我的java程序,以及下面显示的有问题的部分,似乎卡在if.equals行上。while循环继续,尽管if语句中的两个选项都没有运行。因此,它不是在else下打印新数据,也不是在defaultif下打印信息,而是继续请求新的输入 System.out.println("Type in government type. Enter '?' and click enter for list of gov types."); while(playerSelection=

我的java程序,以及下面显示的有问题的部分,似乎卡在if.equals行上。while循环继续,尽管if语句中的两个选项都没有运行。因此,它不是在else下打印新数据,也不是在defaultif下打印信息,而是继续请求新的输入

        System.out.println("Type in government type. Enter '?' and click enter for list of gov types.");
        while(playerSelection==false);
        {
            input = fileinput.nextLine();
            if("?".equals(input))
            {
                System.out.println("despotic_monarchy, administrative_monarchy, constitutional_monarchy, despotic_monarchy, enlightened_despotism, feudal_monarchy, revolutionary_empire\n"+
                    "administrative_republic, beauracratic_despotism, constitutional_republic, republican_dictatorship, merchant_republic, noble_republic, revolutionary_republic\n"+
                    "papal_government\n"+
                    "steppe_horde, tribal_democracy, tribal_despotism, tribal_federation");
            }
            else
            {
                fileLines[lGov[nationSelected]] = "     " + input;
                System.out.println(fileLines[lGov[nationSelected]]);
                playerSelection=true;
            }
        }

while语句后面紧跟着一个分号,Java将其视为while循环的整个主体,从而产生一个无限循环。然后它将永远不会到达它下面的大括号中的块


去掉分号,这样括号中的块实际上就是while循环块。

java的另一个让我抓狂的特性。为什么空白语句不能抛出编译错误?@Cruncher一个好的IDE会警告您while循环为空。IntelliJ突出显示它,说“while”循环的主体是空的。即便如此,不幸的是,它是合法的Java,即使这让我感到惊讶。@tman我使用jGrasp。另外,现在它似乎完全跳过了我的nextLine语句,然后运行else行并退出while,而不从用户那里获得任何输入。评出playerSelection==真;它是否正确运行,尽管它在请求输入之前似乎只运行了一次while循环,因为它跳过了一行,我可以假定这是else中的打印。@Cruncher为什么blank语句不能抛出编译错误?它们有合法的用途,比如在String.indexOf方法中:虽然++我很好,至于我的第二个问题,我不太清楚为什么它似乎立即接受空白字符串作为输入,所以我只是添加了一个elseif,因为它什么都不做。添加后效果很好。再次感谢你,雷特。编辑:还有,无论谁问我之前是否有nextInt,是的,我有。出于某种原因,您的评论会显示在我的收件箱中,但不会显示在页面上。