Roxanne
Roxanne

Reputation: 87

Trying to keep new ending balance if while loop repeats

I have to create a game that prompts the user to put in a starting balance and then place a bet. Then they win or lose and their balance is added or subtracted accordingly. My problem is that I don't know how to make the program remember the final balance before starting over in the while loop if the player wants to play again. My balance stays as the original first balance entered when the user is prompted. I'm sorry if this is a repeat, but I couldn't find a question like this and I've been searching for over an hour. Thanks in advance.

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;
    }

}

Upvotes: 2

Views: 212

Answers (1)

Younes HAJJI
Younes HAJJI

Reputation: 375

You can store the balance in a variable

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

Upvotes: 2

Related Questions