java - 如果 while 循环重复,尝试保持新的结束平衡

标签 java if-statement for-loop while-loop

我必须创建一个游戏,提示用户输入起始余额,然后下注。然后他们赢或输,他们的余额就会相应地增加或减少。我的问题是,如果玩家想再次玩游戏,我不知道如何让程序在 while 循环中重新开始之前记住最终的平衡。当提示用户时,我的余额保持为输入的原始第一个余额。如果这是重复的,我很抱歉,但我找不到这样的问题,而且我已经搜索了一个多小时。提前致谢。

import static java.lang.Math.*;
import java.util.Scanner;
public class BetGame
{
    public static void main(String [] args)
    {
        Scanner in = new Scanner(System.in);

        int die1, die2;

        boolean looping = true;

        System.out.println("Please enter your starting balance in whole dollars:");          
        double balance = in.nextDouble();
        System.out.println("Your beginning balance is " + balance + ", good luck!!");
        int guess = 0;
        double bet2 = 0;
        double endingBalance = 0;
        while(looping) {
            while (guess < 3) {//to allow the user to do this only 3 times    
                System.out.println("Enter a valid bet:");
                double bet = in.nextDouble();
                if (bet >= balance || bet >= endingBalance){
                    System.out.println("That is more than your balance.");
                } 
                else if (bet < balance || bet < endingBalance) {                
                    bet2 = 0 + bet;
                    break;
                }
                guess++;
                if (guess == 3) {
                    looping = false;
                    System.out.println("You have entered three invalid bets in a row. Please leave the casino.");  
                }
            }           

            die1 = RollDie();
            die2 = RollDie();
            int sum = die1 + die2;

            if (2 <= sum && sum <= 6) {                
                System.out.println("The roll is " + die1 + " and " + die2 + " for a " + sum + " for a win!");
                endingBalance = balance + bet2;
            }
            else if (7 <= sum && sum <= 12) {
                System.out.println("The roll is " + die1 + " and " + die2 + " for a " + sum + " for a lose!");
                endingBalance = balance - bet2;
            }
            System.out.println("Your balance is " + endingBalance);
            System.out.println("Do you want to roll again?");
            String answer = in.next();
            if ((answer.equals("n")) || (answer.equals("N"))) {
                looping = false;
            }
        }
        System.out.println("Your balance is " + endingBalance + ". Better luck next time! Have a wonderful evening!");
    }            

    static int RollDie()
    {
        int min = 1;
        int max = 6;

        return myRandomInteger(min, max);
    }

    static int myRandomInteger(int min, int max)
    {
        double range = max - min + 1.0;
        int randomNum = (int)(range * Math.random()) + min;

        return randomNum;
    }

}

最佳答案

您可以将余额存储在变量中

    double balance = in.nextDouble();
    double originalBalance = balance;

关于java - 如果 while 循环重复,尝试保持新的结束平衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40578115/

相关文章:

java - 说 int 枚举模式是编译时常量是什么意思?

java - 将内容 View 垂直更改为水平后,Android 按钮事件不起作用

java - 如何在 AST eclipse 中检索有关类的继承信息?

java - 如何在 IntelliJ 中使用 MigLayout?

java - 我正在尝试使用 for 循环获取阶乘;但我做错了什么

计算 C 列表中的符号变化

Javascript 对象属性 - 如果不存在则创建属性

python - 如何使用for循环,if-else合并两个文件?

java - 在android studio中检索if/else子句的字符串

Python - 如何从文本中打印出一行