Java 使用循环的初学者21点游戏

Java 使用循环的初学者21点游戏,java,loops,blackjack,Java,Loops,Blackjack,我正在尝试为学校创建一个21点程序,我不明白为什么我的程序在我拿到前两张卡后要求另一张卡后继续重新开始。任何帮助都会很好。我的代码如下 import java.util.Scanner; import java.util.*; public class BlackjackGame { public static void main(String[] args) { String anotherCard, playAgain = "y", ctn; i

我正在尝试为学校创建一个21点程序,我不明白为什么我的程序在我拿到前两张卡后要求另一张卡后继续重新开始。任何帮助都会很好。我的代码如下

import java.util.Scanner;
import java.util.*;

public class BlackjackGame {

    public static void main(String[] args) {

        String anotherCard, playAgain = "y", ctn;
        int nextCard, card1, card2, dCard1, dCard2;
        int cardTotal = 0, dTotal = 0;

        Scanner keyboard = new Scanner(System.in);

        Random random = new Random();

        // Begin dealing the players first two cards

        while (playAgain == "y")
        {
            //dealers first two random cards
            dCard1 = random.nextInt(10) + 1;
            dCard2 = random.nextInt(10) +1;

            //players first two random cards and card total
            card1 = random.nextInt(10) + 1;
            card2 = random.nextInt(10) + 1;
            cardTotal = card1 + card2;

            //Dealers two card total and display only one dealer card
            dTotal = dCard1 + dCard2;
            System.out.println("Dealer shows: " + dCard1);

            //Display players first two cards & card total
            System.out.println("First Cards: " + card1 + ", " +card2);
            System.out.println("Total: "+ cardTotal);

            System.out.print("Another Card (y/n)?: ");
            anotherCard = keyboard.nextLine();

            while (anotherCard == "y")
            {
                nextCard = random.nextInt(10) + 1;
                cardTotal += nextCard;
                System.out.println("Card: " + nextCard);
                System.out.println("Total: " + cardTotal);

                if (cardTotal > 21)
                {
                System.out.println("You busted, Dealer Wins");
                System.out.println("Do you want to play again? (y/n): ");
                playAgain = keyboard.nextLine();
                }   
                if (cardTotal < 21)

                System.out.print("Another Card (y/n)?: ");
                anotherCard = keyboard.nextLine();
                if (anotherCard == "n")
                System.out.print("Press c to continue dealers cards");
                ctn = keyboard.nextLine();


                while (ctn == "c" && dTotal < 17)
                {
                    nextCard = random.nextInt(10) + 1;
                    dTotal += nextCard;

                    if (dTotal > 21)
                    {
                    System.out.println("Dealer Busts, You Win!");
                    System.out.println("Play Again? (y/n): ");
                    playAgain = keyboard.nextLine();
                    if (playAgain.equalsIgnoreCase("y"))
                            playAgain = "y";
                        else
                            System.exit(0);
                    }

                }

            }

        }
    }
}
import java.util.Scanner;
导入java.util.*;
公共类黑杰克游戏{
公共静态void main(字符串[]args){
串另一张卡,playreach=“y”,ctn;
int nextCard、card1、card2、dCard1、dCard2;
int cardTotal=0,DTTOTAL=0;
扫描仪键盘=新扫描仪(System.in);
随机=新随机();
//开始给玩家发前两张牌
while(再次播放==“y”)
{
//前两张随机牌
dCard1=随机。nextInt(10)+1;
dCard2=随机。nextInt(10)+1;
//玩家前两张随机牌和总牌数
card1=random.nextInt(10)+1;
card2=random.nextInt(10)+1;
cardTotal=card1+card2;
//经销商共有两张卡,仅显示一张经销商卡
dTotal=dCard1+dCard2;
System.out.println(“经销商显示:+dCard1”);
//显示玩家前两张牌和牌总数
System.out.println(“第一张卡:“+card1+”,“+card2”);
系统输出打印项次(“总计:+cardTotal”);
系统输出打印(“另一张卡片(y/n)?:”;
另一张卡=keyboard.nextLine();
while(另一张卡==“y”)
{
nextCard=random.nextInt(10)+1;
cardTotal+=nextCard;
System.out.println(“卡:+nextCard”);
系统输出打印项次(“总计:+cardTotal”);
如果(cardTotal>21)
{
System.out.println(“你失败了,庄家赢了”);
System.out.println(“您想再次播放吗?(y/n):”;
再次播放=keyboard.nextLine();
}   
如果(总卡数<21)
系统输出打印(“另一张卡片(y/n)?:”;
另一张卡=keyboard.nextLine();
如果(另一张卡==“n”)
系统输出打印(“按c继续经销商卡”);
ctn=keyboard.nextLine();
而(ctn==“c”&&D总计<17)
{
nextCard=random.nextInt(10)+1;
dTotal+=nextCard;
如果(数据总量>21)
{
System.out.println(“经销商破产,你赢了!”);
System.out.println(“再次播放”(y/n):”;
再次播放=keyboard.nextLine();
if(playreach.equalsIgnoreCase(“y”))
play=“y”;
其他的
系统出口(0);
}
}
}
}
}
}
此表达式:

if (playAgain == "y")
将永远不会为true,因为只有当两个操作数是同一对象时,
=
运算符才为true。要比较字符串的值,请使用
equals()


别难过。问题在于语言——像这样使用
=
操作符是一个愚蠢的选择。这里有很大一部分问题的根源在于这个问题。

这个表达:

if (playAgain == "y")
将永远不会为true,因为只有当两个操作数是同一对象时,
=
运算符才为true。要比较字符串的值,请使用
equals()


别难过。问题在于语言——像这样使用
=
操作符是一个愚蠢的选择。这里有很大一部分问题的根源在于这个问题。

这个表达:

if (playAgain == "y")
将永远不会为true,因为只有当两个操作数是同一对象时,
=
运算符才为true。要比较字符串的值,请使用
equals()


别难过。问题在于语言——像这样使用
=
操作符是一个愚蠢的选择。这里有很大一部分问题的根源在于这个问题。

这个表达:

if (playAgain == "y")
将永远不会为true,因为只有当两个操作数是同一对象时,
=
运算符才为true。要比较字符串的值,请使用
equals()



别难过。问题在于语言——像这样使用
=
操作符是一个愚蠢的选择。这里的大部分问题都是从根本上解决的。

Read使用
String
equals
方法来比较字符串值,而不是
=
操作符。如果
playreach
是单个字符,则使用
char
。Read使用
String
equals
方法来比较字符串值,不是
=
运算符。如果
playreach
是单个字符,请使用
char
。读取使用
String
equals
方法来比较字符串值,而不是
=
运算符。如果
playreach
是单个字符,使用
char
。读取使用
String
equals
方法来比较字符串值,而不是
=
运算符。如果
playreach
是单个字符,请使用
char