java - 用java编写二十一点和纸牌程序时遇到问题

标签 java blackjack

我已经在这个项目上工作了几天,但我不明白为什么它不起作用。希望新的眼光能有所帮助。当我运行这个程序时,有几件事不会发生。

唯一真正起作用的是管理用户下注的部分。一些问题包括:

  • 它不会带来卡片值(应该来自随机生成 1-13 数字的类)。

  • 不等待用户输入0是否继续抽牌

  • 当它说第三张卡是什么时,它会说Card@42a57993
  • 不提供卡的总值(value)。
  • 当我尝试解决问题时,也会发生错误。在 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");
    }
 }
}

这是我的 Card 类的代码

import java.util.Random; 

public class Card {
private int cardValue; 
Random random = new Random();

public Card(){
    cardValue = 1;
}

public int getCard(){
    cardValue = (cardValue + random.nextInt(12));
    if(cardValue>10)
        return 10;
    else
        return cardValue;   
}

public int display(){
    switch (cardValue){
    case 1: System.out.println("Ace");
    break;
    case 2: System.out.println("Two");
    break; 
    case 3: System.out.println("Three"); 
    break; 
    case 4: System.out.println("Four");
    break;
    case 5: System.out.println("Five");
    break;
    case 6: System.out.println("Six");
    break;
    case 7: System.out.println("Seven");
    break; 
    case 8: System.out.println("Eight");
    break;
    case 9: System.out.println("Nine");
    break; 
    case 10: System.out.println("Ten");
    break; 
    case 11: System.out.println("Jack");
    break;
    case 12: System.out.println("Queen");
    break;
    case 13: System.out.println("King");
    break; 

    }   
    return cardValue; 
}       

}

最佳答案

我猜你的错误发生在这里:

cardTotal= card1 + card2; 
<小时/>

card1card2Card 类型。编译器不知道如何添加它们。

您应该像这样获得卡总数:

cardTotal = card1.cardValue+ card2.cardValue;

关于java - 用java编写二十一点和纸牌程序时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26938440/

相关文章:

c - 对我的简单二十一点程序的建议/改进

c# - 二十一点纸牌、字符串或整数的数组?

java - 为什么会出现此错误? "bad operand types for binary operator ' >'"

java - 如何使用 Hibernate 将枚举值保存到 DB?

java - 为什么我的 View 没有改变?

node.js - 为字母指定特定数字

java - 在抽出每张牌之前检查我的牌组时出现奇怪的输出

java - 自定义操作栏未显示

java - OnOptionsItemSelected - 按一个按钮执行另一个按钮的操作

java - 如何在 Java 中的同一个列表中添加多个对象类型