为硬币翻转程序编写一个嵌套的while循环,我不知道为什么我的代码无法编译。
最后的用户输入给我索引超出范围的错误。有人可以告诉我如何解决这个问题吗?

 Scanner lit = new Scanner(System.in);
 int numHeads = 0;
 int numTails = 0;
 int counter = 0;
 boolean tryAgain = false;
 String replayResponse = "";
 char replay = '0';

 System.out.println("Enter how many times a coin should be flipped");
 int numFlipped = lit.nextInt();

 do {

     do{


     if (Math.random() > 0.5){
         System.out.println("H");
         numHeads++; counter++;
     }

     else if (Math.random() < 0.5){
         System.out.println("T");
         numTails++; counter++;
     }


 } while(counter < numFlipped);

     tryAgain = true;

 } while (!tryAgain);

 System.out.println("Number of heads is " + numHeads);
 System.out.println("Number of tails is " + numTails);
 System.out.println("");
 System.out.println(" Would you like to play again? : Y/N ");


    replayResponse = lit.nextLine();
    replay = replayResponse.charAt(0);
    if (replay == 'Y' || replay == 'y') {
        tryAgain = false;
    } else {
        tryAgain = true;


     }

        lit.close();
        System.out.println();
        System.out.println("You exited out of the game.");
        System.out.println("Goodbye!");
     }

最佳答案

扫描int时,您需要重置输入。当前,扫描仪正在寻找下一个整数。因此,像这样添加lit.nextLine();

 lit.nextLine();
 replayResponse = lit.nextLine();
    replay = replayResponse.charAt(0);
    if (replay == 'Y' || replay == 'y') {
        tryAgain = false;
    } else {
        tryAgain = true;

     }


您也可以这样做:

if(lit.hasNextInt())
{
   numFlip = lit.nextInt();
}


解决类型不匹配的异常。

07-26 07:55