比赛结束后如何让节目继续进行菜单

时间:2011-12-07 18:50:35

标签: java

我正在做一个Java程序(使用类中的类)而且我在游戏菜单中的某个位置停留。游戏在“案例2”结束后,我希望程序返回菜单而不是退出。我已从DieGame删除了任何退出语句,其他类显然没有任何退出语句。如果您需要更多说明以帮助请随时询问!

import java.io.IOException;
import java.util.Scanner;

public class Game1 {
  public static void main(String[] args) throws IOException {
    Scanner in = new Scanner (System.in);
    DieGame game = new DieGame();
    Date2   date = new Date2();
    Time    time = new Time();
    int gameMenuChoice;

    do {
      System.out.println("\nEnter player information: Press 1 ");
      System.out.println("Play the game: Press 2 ");
      System.out.println("Update top player information: Press 3 ");
      System.out.println("Display top player: Press 4 ");
      System.out.println("Quit: Press 5 ");
      System.out.print  ("Enter choice: ");

      gameMenuChoice = in.nextInt();

      switch (gameMenuChoice) {
        case 1: game.playerName(); 
          date.setYear();
          date.setMonths();
          date.setDay();
          time.setHours();
          time.setMinutes();
          time.setSeconds();
          time.timeOfDayCode();
          break;

        case 2:
          game.playGame();
          break;

        case 3:
        case 4:
          game.displayName();
          date.displayDate();
          time.displayTime();
          break;

        case 5:
          System.out.print("\nThank you for playing..Goodbye");
          System.exit(0);
          break;

        default:System.err.print("PLEASE ENTER A NUMBER BETWEEN 1-5\n");
      }
    } while (gameMenuChoice != 5);
  }
}

import java.util.*;

public class DieGame {

    private String playername;
    private int pot;

    public DieGame() {
        playername = new String();
    }

    public String playerName() {

        Scanner in = new Scanner (System.in);
        System.out.println("\nEnter your name: ");
        playername = in.nextLine();

        return playername;}




    public void playGame() {

    Scanner input = new Scanner (System.in);
    Random randomNumbers = new Random();


    int pot = 100;
    int bet = 1;    
    int die1, die2;
    int sum;

    while(bet != 0) {
        System.out.print("\nCurrent pot is $" + pot + " enter your bet amount (0 to quit):$");
        bet = input.nextInt();

        if(bet == 0){
            System.out.print("\nYou end the game with $" + pot);
            }

        else {
            while ( bet > pot || bet <0){
                if (bet > pot){
                    System.err.print("Invalid wager. Please enter new bet:$");
                    bet = input.nextInt(); }

                    else if (bet < 0){
                        System.err.print("Invalid wager. Please enter new bet:$");
                        bet = input.nextInt();}
            }


            die1 = randomNumbers.nextInt(6) + 1; // first die
            die2 = randomNumbers.nextInt(6) + 1; // second die

            sum = die1 +die2; //sum of die values

            System.out.printf("You rolled %d and %d " , die1, die2);

            if(die1 == die2 ){
                pot = (bet*2) + pot;
                System.out.println("\nYou win double!!");
            }

            else if(sum <= 5 || sum == 10 || sum == 12){
                System.out.println("\nYou stay even!");
            }

            else if(sum == 7 || sum == 11){
                pot = pot + bet;
                System.out.println("\nYou win!");
            }

            else if(sum == 6 || sum == 8 || sum == 9){
                pot = pot - bet;
                System.out.println("\nYou lose!");
            }

            if (pot == 0){
                System.out.print("\nYou end the game with $0"); 

            }

        }
    }
}
    public void displayName() {
        System.out.println("\nTop player is: " + playername +" with a score of:$" + pot);
        }

} // end class DieGame1

1 个答案:

答案 0 :(得分:0)

您没有指定失败的内容,但我的猜测是在

之后
gameMenuChoice = in.nextInt();

你应该添加

in.nextLine();

否则,当您第二次进入循环时,扫描仪将读取剩余的\n而不是您的新号码。新号码是扫描仪,但在下一个广告位中,后面是另一个\n