【问题标题】:main method won't run while loop in javamain方法不会在java中运行while循环
【发布时间】:2018-08-11 13:30:36
【问题描述】:

您好,我正在用 java 编写一个文件,允许用户在计算机上玩二十一点。下面是我的代码。每当我在 Dr.javait 中运行它时,都会说运行 main 方法,但是什么也没发生。我知道如果你不给循环一个条件来结束它是无限的但是我相信我在我的代码中给出了一个结束条件但我可能会弄错。

public class BlackJack {

    public static void main(String [] args) {
        Scanner in = new Scanner(System.in);
        boolean playing = true;
        Random card = new Random();
        int playerCard1 = card.nextInt(11)+1;
        int playerCard2= card.nextInt(10)+1;
        int dealerCard1= card.nextInt(11)+1;
        int dealerCard2= card.nextInt(11)+1;
        int playerTotal= playerCard1 + playerCard2;
        boolean bust = true;
        boolean blackJack = true;
        while(playing) { // start while loop, loop until playing is false
            while((!blackJack) || (!bust)){ // begin while loop
                System.out.println("You drew a:" + playerCard1 + " and a " + playerCard2);
                System.out.println("Your total is:" + playerTotal);
                System.out.println("The dealer has a: " + dealerCard1 + "showing and a hidden card");
                if(playerTotal ==21) {
                    System.out.println("Your total is: " + playerTotal);
                    System.out.println("BLACKJACK! You WON!");
                    blackJack = true;
                    playing = false;
                }
                while (playerTotal <21){ // begin while loop
                    String playerDecision=in.next();
                    if(playerDecision.equals( "hit")) { // if player hits
                        int playerCard = card.nextInt(11)+1;
                        playerTotal = playerCard1 + playerCard2 + playerCard;
                        System.out.println("You drew a: " + playerCard);
                        System.out.println("Your total is now:" + playerTotal);
                    } else if (playerDecision.equals("Stay")) {
                        // player decides to stay 
                        System.out.println("Okay! It is now the dealer's turn");
                        System.out.println("His hidden card was:" + dealerCard2);
                        int dealerTotal = dealerCard1 + dealerCard2;
                        System.out.println("His total was: " + dealerTotal);
                        if(dealerTotal == 21) {
                            blackJack = true;
                            System.out.println("The dealer won");
                        } 
                        while (dealerTotal < 16) { // begin while for dealerTotal <16 
                            int dealerCard = card.nextInt(11)+1;
                            System.out.print("The dealer chose to hit");
                            System.out.println("He drew a:" + dealerCard);
                            dealerTotal = dealerCard1 + dealerCard2 + dealerCard;
                            System.out.println("His is total is: " + dealerTotal);
                        } // end while
                        if(dealerTotal >21) { // if dealer goes over 21 he busts, bust is true
                            System.out.println("The Dealer BUSTS! You WON!" );
                            bust = true;
                            playing = false;
                        } else if(dealerTotal >playerTotal) {
                            System.out.println("The Dealer Won! You lost");
                            blackJack = true;
                            playing= false;
                        } else if(playerTotal > dealerTotal) { 
                            System.out.println("You Won");
                            blackJack = true;
                            playing = false;
                        }
                    } // end else if player stays
                }
            }
        } // end while loop for player<21
    }
}

【问题讨论】:

    标签: java while-loop infinite-loop blackjack


    【解决方案1】:

    似乎您正在将 blackjack 的布尔值初始化为 true,但您的第一个 while 循环仅在该值为 false 时才开始:!blackjack,简单的解决方法是将其更改为那个二十一点 = 班级级别的假。

    ...
    boolean bust = true;
    boolean blackJack = false;
    
    while(playing) { // start while loop, loop until playing is false
    
        while((!blackJack) || (!bust)){ // begin while loop
    ...
    

    【讨论】:

    • 我将值更改为 false 但仍然无法运行
    • 它说正在运行 main 方法但没有任何反应
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多