Java to.UpperCase跳过它应该工作的进程

Java to.UpperCase跳过它应该工作的进程,java,loops,uppercase,Java,Loops,Uppercase,我正在开发一个掷硬币程序,希望允许用户使用toUpperCase()输入小写或大写的正面/反面。但出于某种原因,在我输入正反两种方式后,它将跳过整个循环过程并打印最后一条语句。我不知道为什么,因为我有类似的计划,而且效果很好。感谢您的建议 do { System.out.printf("Do you predict heads or tails for the coin toss?(heads or tails): "); String predict =

我正在开发一个掷硬币程序,希望允许用户使用toUpperCase()输入小写或大写的正面/反面。但出于某种原因,在我输入正反两种方式后,它将跳过整个循环过程并打印最后一条语句。我不知道为什么,因为我有类似的计划,而且效果很好。感谢您的建议

    do {
        System.out.printf("Do you predict heads or tails for the coin toss?(heads or tails): ");
        String predict = in.next();
        System.out.print("Tossing a coin...");
        System.out.println();

        predict = predict.toUpperCase();

        int cointoss= (int) (Math.random()*OUTCOMES);
        if(predict.equals("heads") && cointoss==0){
            System.out.print("The coin came up heads. You win!");
            System.out.println();
            wins ++;
}


使用
equalsIgnoreCase
而不是
equals
。那么你就不必考虑大写/小写(顺便说一句,你把它弄混了)

那么,你至少可以把它转换成大写,然后和小写进行比较。没有关于循环的任何线索,因为您没有包括所有循环,但请确保字符串与您认为的完全一致。请尝试打印变量或使用调试器,以帮助您快速解决类似问题如果您编写
“HEADS”
而不是
“HEADS”,会发生什么情况
?@DaveNewton您的意思是predict=predict.toUpperCase()+predict.toLowerCase()?我也试过了,但仍然不能正常工作。或者还有其他比较方法吗?@DawoodibnKareem它跳过了抛硬币的过程,直到最后一次打印时,我问用户是想玩还是退出。但它并没有停止程序
        System.out.print("Type \"c\" to continue or any other letter to quit: ");
        playAgain = in.next();
        if (playAgain.equals("c")){
            done = false;
        } else done = true;
        count++;