在java中编写21点和纸牌程序时遇到问题
我已经在这个项目上工作了几天,我不明白为什么它不起作用。希望一双新的眼睛会有所帮助。当我运行这个程序时,有几件事没有发生 唯一真正起作用的是管理用户下注的部分。一些问题包括:在java中编写21点和纸牌程序时遇到问题,java,blackjack,Java,Blackjack,我已经在这个项目上工作了几天,我不明白为什么它不起作用。希望一双新的眼睛会有所帮助。当我运行这个程序时,有几件事没有发生 唯一真正起作用的是管理用户下注的部分。一些问题包括: 它不会带来卡值(应该来自随机生成1-13之间的数字的类) 不等待用户输入0以绘制更多卡片 当它说第三张卡是什么时,它说的是Card@42a57993 不提供卡的总价值 当我试图修复一个问题时,也会发生一个错误。除了cardTotal之外,错误表示“参数类型的运算符+未定义。” 它可能丢失或有额外的括号,但我找不到它们应
- 它不会带来卡值(应该来自随机生成1-13之间的数字的类)
- 不等待用户输入0以绘制更多卡片
- 当它说第三张卡是什么时,它说的是
Card@42a57993
- 不提供卡的总价值
- 当我试图修复一个问题时,也会发生一个错误。除了cardTotal之外,错误表示“参数类型的运算符+未定义。”
import java.util.Scanner;
public class Game {
private double pot;
private double bet;
private int answer;
private int cardTotal;
Card card1 = new Card();
Card card2 = new Card();
Card card3 = new Card();
// constructor
public Game(){
pot = 100;
bet = 0;
}
Scanner keyboard = new Scanner(System.in);
// GetBetFrom user, prompts user to enter a valid bet, reenter until a valid amount
public double getBetFromUser(){
System.out.println("Your current pot is: "+pot);
System.out.println("Enter your bet amount");
bet = keyboard.nextDouble();
//Rules for the bet
while(bet>pot || bet<0){
if(pot==0){
break;
}
if(bet>pot){
System.out.println("Sorry, you don't have enough money for that, try again");
bet = keyboard.nextDouble();
}
if(bet<0){
System.out.println("That is not a valid bet, please try again");
bet = keyboard.nextDouble();
}
}
return bet;
}
// Game mechanics
public void gamePlay(){
System.out.println("Your first card is: "+card1);
System.out.println("Your second card is: "+card2);
cardTotal= card1 + card2;
System.out.println("Your total is: "+cardTotal);
System.out.println("Enter 0 to draw more, any other number to quit: ");
if(answer == 0); {
System.out.println("Your next card is: "+card3);
System.out.println("Your total is: ");
}
}
public void results(){
if(cardTotal > 21){
System.out.println("You lose your bet");
pot = pot-bet;
}
if(cardTotal==21){
System.out.println("You win three times your bet");
pot = pot-bet+(bet*3);
}
if(cardTotal==20){
System.out.println("You win double your bet amount");
pot = pot-bet+(bet*2);
}
if(cardTotal<=19){
System.out.println("You win your bet amount");
}
}
}
}我猜您的错误发生在这里:
cardTotal= card1 + card2;
card1
和card2
是Card
类型。编译器不知道如何添加它们
您应该这样获得您的卡总金额:
cardTotal = card1.cardValue+ card2.cardValue;
这可能对你有帮助。我建议您阅读如何引用对象及其方法。键盘输入数据的验证丢失,但这是您的工作:
import java.util.Scanner;
public class Game {
private double pot;
private double bet;
private int answer;
private int cardTotal;
Card card1 = new Card();
Card card2 = new Card();
Card card3 = new Card();
// constructor
public Game(){
pot = 100;
bet = 0;
}
Scanner keyboard = new Scanner(System.in);
// GetBetFrom user, prompts user to enter a valid bet, reenter until a valid amount
public double getBetFromUser(){
System.out.println("Your current pot is: "+pot);
System.out.print("Enter your bet amount: ");
bet = keyboard.nextDouble();
//Rules for the bet
while(bet>pot || bet<0){
if(pot==0){
break;
}
if(bet>pot){
System.out.println("Sorry, you don't have enough money for that, try again");
bet = keyboard.nextDouble();
}
if(bet<0){
System.out.println("That is not a valid bet, please try again");
bet = keyboard.nextDouble();
}
}
return bet;
}
// Game mechanics
public void gamePlay(){
int first= card1.getCard();
int second = card2.getCard();
int third = card3.getCard();
System.out.println("Your first card is: "+first);
System.out.println("Your second card is: "+second);
cardTotal= first + second;
System.out.println("Your total is: "+cardTotal);
System.out.print("Enter 0 to draw more, any other number to quit: ");
answer = keyboard.nextInt();
if(answer == 0) {
System.out.println("Your next card is: "+third);
cardTotal=cardTotal + third;
}
System.out.println("Your total is: "+cardTotal);
}
public void results(){
if(cardTotal > 21){
System.out.println("You lose your bet");
pot = pot-bet;
}
if(cardTotal==21){
System.out.println("You win three times your bet");
pot = pot-bet+(bet*3);
}
if(cardTotal==20){
System.out.println("You win double your bet amount");
pot = pot-bet+(bet*2);
}
if(cardTotal<=19){
System.out.println("You win your bet amount");
}
}
public static void main(String[] args) {
Game game = new Game();
game.getBetFromUser();
game.gamePlay();
game.results();
}
import java.util.Scanner;
公开课游戏{
私人双罐;
私人双注;
私人回答;
私人总收入;
Card card1=新卡();
Card card2=新卡();
Card card3=新卡();
//建造师
公共游戏(){
pot=100;
bet=0;
}
扫描仪键盘=新扫描仪(System.in);
//GetBetFrom user,提示用户输入有效下注,重新输入,直到达到有效金额
公共双getBetFromUser()函数{
System.out.println(“您当前的pot是:“+pot”);
System.out.print(“输入您的下注金额:”);
bet=键盘.nextDouble();
//下注规则
而(赌注>赌注| |赌注){
System.out.println(“对不起,您没有足够的钱,再试一次”);
bet=键盘.nextDouble();
}
如果(赌21){
System.out.println(“你输了赌注”);
赌注=赌注;
}
如果(cardTotal==21){
System.out.println(“你赢了三倍的赌注”);
赌注=赌注+(赌注*3);
}
如果(cardTotal==20){
System.out.println(“你赢了双倍的赌注”);
赌注=赌注+(赌注*2);
}
如果(CardTotal如果你每个问题问1个问题,你会得到更好的回答。你在这个问题中列出了5个问题。你应该关注其中一个问题。你还应该尝试一次一个地实现你的要求。在你知道随机生成额外卡的代码起作用之前,不要开始编写抽卡代码。这样,你就有了更简单的问题要解决,而不是一次解决所有的问题Card@42a57993
,compare@sockowl这取决于卡类的定义。您需要移动新随机()
进入一个静态初始值设定项,因此它只在程序开始时发生一次,您需要将调用从getCard()
移动到Card()
初始值设定项中,以使新卡的随机值不会在每次调用getCard()时改变
。摆脱那个愚蠢的开关
;你还没有学会数组吗?@sockowl这里有一些变化。
import java.util.Scanner;
public class Game {
private double pot;
private double bet;
private int answer;
private int cardTotal;
Card card1 = new Card();
Card card2 = new Card();
Card card3 = new Card();
// constructor
public Game(){
pot = 100;
bet = 0;
}
Scanner keyboard = new Scanner(System.in);
// GetBetFrom user, prompts user to enter a valid bet, reenter until a valid amount
public double getBetFromUser(){
System.out.println("Your current pot is: "+pot);
System.out.print("Enter your bet amount: ");
bet = keyboard.nextDouble();
//Rules for the bet
while(bet>pot || bet<0){
if(pot==0){
break;
}
if(bet>pot){
System.out.println("Sorry, you don't have enough money for that, try again");
bet = keyboard.nextDouble();
}
if(bet<0){
System.out.println("That is not a valid bet, please try again");
bet = keyboard.nextDouble();
}
}
return bet;
}
// Game mechanics
public void gamePlay(){
int first= card1.getCard();
int second = card2.getCard();
int third = card3.getCard();
System.out.println("Your first card is: "+first);
System.out.println("Your second card is: "+second);
cardTotal= first + second;
System.out.println("Your total is: "+cardTotal);
System.out.print("Enter 0 to draw more, any other number to quit: ");
answer = keyboard.nextInt();
if(answer == 0) {
System.out.println("Your next card is: "+third);
cardTotal=cardTotal + third;
}
System.out.println("Your total is: "+cardTotal);
}
public void results(){
if(cardTotal > 21){
System.out.println("You lose your bet");
pot = pot-bet;
}
if(cardTotal==21){
System.out.println("You win three times your bet");
pot = pot-bet+(bet*3);
}
if(cardTotal==20){
System.out.println("You win double your bet amount");
pot = pot-bet+(bet*2);
}
if(cardTotal<=19){
System.out.println("You win your bet amount");
}
}
public static void main(String[] args) {
Game game = new Game();
game.getBetFromUser();
game.gamePlay();
game.results();
}