正面或反面的博弈循环问题 import java.util.Scanner; 导入javax.swing.JOptionPane; 公共级硬币{ 公共静态void main(字符串[]args) { 布尔值validFinalInput=false; 布尔值validBetInput=false; 布尔值validGuessInput=false;//确定猜测是否为有效输入 布尔值validBet=false;//确定下注是否有效 布尔增益=真; double num;//未解析的边限定符 双倍余额=100; 字符串Bet=null;//Bet输入 双下注=0;//已解析的下注 字符串Guess=null;//H或T String Side=null;//确定Side 字符串GoAgain=null;//是/否重试输入 扫描仪输入=新扫描仪(系统输入); while(goAgain==true){//while true,球员将继续比赛。 num=Math.round(Math.random());//声明数字 如果(num==1){ Side=“H”; }else if(num==0){ Side=“T”; } 而(validGuessInput==false){//确定输入是否有效 System.out.println(“猜测:(H/T)”); 猜测=in.next(); 如果(猜测等于(“H”)|猜测等于(“T”)){ validGuessInput=true; }否则{ showMessageDialog(null,“无效猜测!”); validGuessInput=false; } } while(validBet==false){ while(validBetInput==false){ 试一试{ System.out.println(“打赌”(您的余额为“$”+余额); Bet=in.next(); 下注=Double.parseDouble(下注); 如果(下注>0){ validBetInput=true; } }捕获(数字格式){ showMessageDialog(null,“无效赌注!”); } } 如果(下注=0){ validBet=true; }否则{ showMessageDialog(null,“无效赌注!”); validBet=false; } } 如果(猜测等于(边)){ 余额=余额+(下注*2); System.out.println(“正确!侧面是:”+侧面); System.out.println(“您现在的余额为:$”+余额); }否则{ 余额=余额-赌注; System.out.println(“不正确!侧面是:”+侧面); System.out.println(“您现在的余额为:$”+余额); } 如果(余额==0){ System.out.println(“钱用完了,游戏结束了”); 打破 } System.out.println(“再次执行(Y/N)”); GoAgain=in.next(); while(validFinalInput==false); System.out.println(“再次执行(Y/N)”); GoAgain=in.next(); validGuessInput=false; validBet=false; validBetInput=false; if(GoAgain.equals(“Y”)){ goAgain=true; validFinalInput=true; }else if(GoAgain.equals(“N”)){ goAgain=false; validFinalInput=true; System.out.println(“感谢您的参与!您以:$”+余额结束); }否则{ System.out.println(“无效输入!”); } } } }

正面或反面的博弈循环问题 import java.util.Scanner; 导入javax.swing.JOptionPane; 公共级硬币{ 公共静态void main(字符串[]args) { 布尔值validFinalInput=false; 布尔值validBetInput=false; 布尔值validGuessInput=false;//确定猜测是否为有效输入 布尔值validBet=false;//确定下注是否有效 布尔增益=真; double num;//未解析的边限定符 双倍余额=100; 字符串Bet=null;//Bet输入 双下注=0;//已解析的下注 字符串Guess=null;//H或T String Side=null;//确定Side 字符串GoAgain=null;//是/否重试输入 扫描仪输入=新扫描仪(系统输入); while(goAgain==true){//while true,球员将继续比赛。 num=Math.round(Math.random());//声明数字 如果(num==1){ Side=“H”; }else if(num==0){ Side=“T”; } 而(validGuessInput==false){//确定输入是否有效 System.out.println(“猜测:(H/T)”); 猜测=in.next(); 如果(猜测等于(“H”)|猜测等于(“T”)){ validGuessInput=true; }否则{ showMessageDialog(null,“无效猜测!”); validGuessInput=false; } } while(validBet==false){ while(validBetInput==false){ 试一试{ System.out.println(“打赌”(您的余额为“$”+余额); Bet=in.next(); 下注=Double.parseDouble(下注); 如果(下注>0){ validBetInput=true; } }捕获(数字格式){ showMessageDialog(null,“无效赌注!”); } } 如果(下注=0){ validBet=true; }否则{ showMessageDialog(null,“无效赌注!”); validBet=false; } } 如果(猜测等于(边)){ 余额=余额+(下注*2); System.out.println(“正确!侧面是:”+侧面); System.out.println(“您现在的余额为:$”+余额); }否则{ 余额=余额-赌注; System.out.println(“不正确!侧面是:”+侧面); System.out.println(“您现在的余额为:$”+余额); } 如果(余额==0){ System.out.println(“钱用完了,游戏结束了”); 打破 } System.out.println(“再次执行(Y/N)”); GoAgain=in.next(); while(validFinalInput==false); System.out.println(“再次执行(Y/N)”); GoAgain=in.next(); validGuessInput=false; validBet=false; validBetInput=false; if(GoAgain.equals(“Y”)){ goAgain=true; validFinalInput=true; }else if(GoAgain.equals(“N”)){ goAgain=false; validFinalInput=true; System.out.println(“感谢您的参与!您以:$”+余额结束); }否则{ System.out.println(“无效输入!”); } } } },java,Java,因此,我为一款“正面或反面”风格的游戏编写了这段代码。它最初是有效的,但后来我决定添加一些功能,结果失败了。基本上,它到了结尾,但仍然停留在最后一个输入(Y/N)上 有人能告诉我我做错了什么吗 很抱歉没有评论 我也知道我的变量不太符合约定,所以也很抱歉 谢谢。在以while(goAgain==true){开头的循环中,goAgain的值永远不会改变,因为它在while(validBet==false){之前以结尾。结束括号放错了。在以while(goAgain==true)开头的循环中,goAg

因此,我为一款“正面或反面”风格的游戏编写了这段代码。它最初是有效的,但后来我决定添加一些功能,结果失败了。基本上,它到了结尾,但仍然停留在最后一个输入(Y/N)上

有人能告诉我我做错了什么吗

很抱歉没有评论

我也知道我的变量不太符合约定,所以也很抱歉


谢谢。

在以
while(goAgain==true){
开头的循环中,goAgain的值永远不会改变,因为它在
while(validBet==false){
之前以
结尾。结束括号放错了。

在以
while(goAgain==true)开头的循环中,goAgain的值永远不会改变{
,因为它以
}
结尾,正好在
之前,而(validBet==false){
。结束括号放错了位置

  • 删除此处的分号

    while(validFinalInput==false)

  • 正确缩进代码

  • 在此处检查您的逻辑;您正在为两个条件(true和false)设置validFinalInput=true

    if(GoAgain.equals(“Y”)){ ......... validFinalInput=true;}

    else if(GoAgain.equals(“N”)){ ....... validFinalInput=true;}

  • 删除此处的分号

    while(validFinalInput==false)

  • 正确缩进代码

  • 在此处检查您的逻辑;您正在为两个条件(true和false)设置validFinalInput=true

    if(GoAgain.equals(“Y”)){ ......... validFinalInput=true;}

    else if(GoAgain.equals(“N”)){ ....... validFinalInput=true;}


  • 你有这个while语句

    import java.util.Scanner;
    import javax.swing.JOptionPane;
    public class Coin {
        public static void main(String[] args)
        {
            boolean validFinalInput = false;
            boolean validBetInput = false;
            boolean validGuessInput = false; //Determines if the guess is a valid input
            boolean validBet = false; //Determines if the bet is valid
            boolean goAgain = true;
            double num; //Unparsed Side Determiner
            double balance = 100; 
            String Bet = null; //Bet Input
            double bet = 0; //Parsed Bet
            String Guess = null; //H or T
            String Side = null; //Determines Side
            String GoAgain = null; //Y/N Retry input
            Scanner in = new Scanner(System.in);
    
            while (goAgain == true){ //While true, the player will keep playing.
                num = Math.round(Math.random()); //Declares Number
                if (num == 1){
                    Side = "H";
                } else if (num == 0){
                    Side = "T";
                } 
                while (validGuessInput == false){ //Determines if the input is valid
                    System.out.println("Guess: (H/T)");
                    Guess = in.next();
                if (Guess.equals("H") || Guess.equals("T")){
                    validGuessInput = true;
                } else {
                    JOptionPane.showMessageDialog(null, "Invalid Guess!");
                    validGuessInput = false;
                }
            }
            while (validBet == false){
                while (validBetInput == false){
                    try {
                        System.out.println("Bet? (Your balance is $" + balance);
                        Bet = in.next();
                        bet = Double.parseDouble(Bet);
                        if (bet > 0){
                            validBetInput = true;
                        }
                    } catch (NumberFormatException e) {
                        JOptionPane.showMessageDialog(null, "Invalid Bet!");
                    }
                }
                if (bet <= balance && bet >= 0){
                    validBet = true;
                } else {
                    JOptionPane.showMessageDialog(null, "Invalid Bet!");
                    validBet = false;
                }
            }
            if (Guess.equals(Side)){
                balance = balance + (bet * 2);
                System.out.println("Correct! The side was: " + Side);
                System.out.println("Your balance is now: $" + balance);
            } else {
                balance = balance - bet;
                System.out.println("Incorrect! The side was: " + Side);
                System.out.println("Your balance is now: $" + balance);
            }
            if (balance == 0){
                System.out.println("You ran out of money. Ending Game.");
                break;
            }
            System.out.println("Go again? (Y/N)");
            GoAgain = in.next();
            while (validFinalInput == false);
                System.out.println("Go again? (Y/N)");
                GoAgain = in.next();
                validGuessInput = false;
                validBet = false;
                validBetInput = false;
            if (GoAgain.equals("Y")){
                goAgain = true;
                validFinalInput = true;
            } else if (GoAgain.equals("N")){
                goAgain = false;
                validFinalInput = true;
                System.out.println("Thanks for playing! You ended with: $" + balance);
            } else {
                System.out.println("Invalid Input!");
                }
            }
       }
    }
    
    这是一个无限循环!由于分号的原因,它将永远无法通过这部分代码。如果像这样重写它,它应该可以工作:

        while (validFinalInput == false);
    

    你有这个while语句

    import java.util.Scanner;
    import javax.swing.JOptionPane;
    public class Coin {
        public static void main(String[] args)
        {
            boolean validFinalInput = false;
            boolean validBetInput = false;
            boolean validGuessInput = false; //Determines if the guess is a valid input
            boolean validBet = false; //Determines if the bet is valid
            boolean goAgain = true;
            double num; //Unparsed Side Determiner
            double balance = 100; 
            String Bet = null; //Bet Input
            double bet = 0; //Parsed Bet
            String Guess = null; //H or T
            String Side = null; //Determines Side
            String GoAgain = null; //Y/N Retry input
            Scanner in = new Scanner(System.in);
    
            while (goAgain == true){ //While true, the player will keep playing.
                num = Math.round(Math.random()); //Declares Number
                if (num == 1){
                    Side = "H";
                } else if (num == 0){
                    Side = "T";
                } 
                while (validGuessInput == false){ //Determines if the input is valid
                    System.out.println("Guess: (H/T)");
                    Guess = in.next();
                if (Guess.equals("H") || Guess.equals("T")){
                    validGuessInput = true;
                } else {
                    JOptionPane.showMessageDialog(null, "Invalid Guess!");
                    validGuessInput = false;
                }
            }
            while (validBet == false){
                while (validBetInput == false){
                    try {
                        System.out.println("Bet? (Your balance is $" + balance);
                        Bet = in.next();
                        bet = Double.parseDouble(Bet);
                        if (bet > 0){
                            validBetInput = true;
                        }
                    } catch (NumberFormatException e) {
                        JOptionPane.showMessageDialog(null, "Invalid Bet!");
                    }
                }
                if (bet <= balance && bet >= 0){
                    validBet = true;
                } else {
                    JOptionPane.showMessageDialog(null, "Invalid Bet!");
                    validBet = false;
                }
            }
            if (Guess.equals(Side)){
                balance = balance + (bet * 2);
                System.out.println("Correct! The side was: " + Side);
                System.out.println("Your balance is now: $" + balance);
            } else {
                balance = balance - bet;
                System.out.println("Incorrect! The side was: " + Side);
                System.out.println("Your balance is now: $" + balance);
            }
            if (balance == 0){
                System.out.println("You ran out of money. Ending Game.");
                break;
            }
            System.out.println("Go again? (Y/N)");
            GoAgain = in.next();
            while (validFinalInput == false);
                System.out.println("Go again? (Y/N)");
                GoAgain = in.next();
                validGuessInput = false;
                validBet = false;
                validBetInput = false;
            if (GoAgain.equals("Y")){
                goAgain = true;
                validFinalInput = true;
            } else if (GoAgain.equals("N")){
                goAgain = false;
                validFinalInput = true;
                System.out.println("Thanks for playing! You ended with: $" + balance);
            } else {
                System.out.println("Invalid Input!");
                }
            }
       }
    }
    
    这是一个无限循环!由于分号的原因,它将永远无法通过这部分代码。如果像这样重写它,它应该可以工作:

        while (validFinalInput == false);
    

    您粘贴了太多的代码。请将其解析为仅与实际问题相关的代码。此外,存在命名约定也是有原因的。名为
    goAgain
    的布尔值和名为
    goAgain
    的字符串会使您的代码非常混乱。我也知道我的变量不太符合约定,对此表示抱歉那你为什么不先修一下再问呢