首页 > 解决方案 > 如何返回我的 getWin,而不仅仅是 true 或 false

问题描述

我试图让我的程序采用多个不同的返回语句,这样我就可以分出胜负,而不仅仅是赢或输,而且似乎不知道该怎么做。我的程序可以让你赢,而且你的赌注加倍。如果你打领带,你会拿回你的钱。如果你输了,你就输了。我以前使用布尔值并返回真或假,但需要一种方法来添加一种方法来进行拆分。

我尝试了多种我在网上看到的方法,但无济于事,我们将不胜感激。

//Import Random Number Generator
import java.util.Random;

class BlackJackPlayer{
   //Keep the data secure by using private
   private String hand;
   private int sum;
   private int numAces;
   private static Random gen = new Random();
   private String Win;
   private String Lose;
   private String Split;

   private final int ACE = 1;
   private final int JACK = 11;
   private final int QUEEN = 12;
   private final int KING = 13;

   //constructor
   public BlackJackPlayer(){
      hand = "";
      sum = 0;
      numAces = 0;
   }

   //Getter for hand variable
   public String getHand(){
      return hand;
   }

   public String setHand(){
      hand = " ";
      return hand;
   }

   //Getter for sum variable
   public int getSum(){
      return sum;
   }

   public void hit(){
      //local variable
      int currentCard = gen.nextInt(13) + 1;

      if(currentCard > ACE && currentCard < JACK){
         sum += currentCard;
         hand += currentCard + "   ";
      }
      else if(currentCard == ACE){
         sum += 11;
         numAces++;
         hand += "A  ";
      }

      else if(currentCard == QUEEN){
         sum += 10;
         hand += "Q  ";
      }

      else if(currentCard == QUEEN){
         sum += 10;
         hand += "Q  ";
      }

      else if(currentCard == KING){
         sum += 10;
         hand += "K  ";
      }//Ends Else If

      //Is Ace 1 or 11
      if(sum > 21 && numAces > 0){
         numAces--;
         sum -= 10;
      }

   }//ENDS HIT

   public String getWin(BlackJackPlayer other) {
      if(sum > 21){
         Win = "Win";
      }
      else if(sum < other.getSum()){
         Lose = "Lose";
      }
      else if(sum == other.getSum()){
         Split = "Split";

   }
   return Win;
      }


}//end main



import java.util.Scanner;
class BlackJackGame{
   public static void main(String args[]){
      BlackJackPlayer you = new BlackJackPlayer();
      BlackJackPlayer enemy = new BlackJackPlayer();
      int chips = 100;
      int bet;
      int winnings;
      int multiply = 2;
      String qORc;
      Scanner in = new Scanner(System.in);

      String choice;
      do{
      you.setHand();
      enemy.setHand();
      you.hit();
      enemy.hit();
      enemy.hit();
         System.out.println("Chips: " + chips);
         System.out.println("How much do you want to bet");
         bet = in.nextInt();
         chips -= bet;
         System.out.println("You bet: " + bet + ", You now have " + chips + " chips");
      do{
         System.out.println("Your Cards:  " + you.getHand());         
         System.out.println("(H)it or (S)tand");
         choice = in.next();
         if(choice.equalsIgnoreCase("h")){
            you.hit();
         }
      }while(choice.equalsIgnoreCase("h"));

      while(enemy.getSum() < 16){
         enemy.hit();
      }
      System.out.println(you.getWin());
       if(you.getWin()){
         System.out.println("You Win");
         System.out.println(enemy.getHand());
         winnings = bet * multiply;
         chips += winnings;
         System.out.println("You now have: " + chips + " chips!");
      }
      else{
         System.out.println("You Lose");
         System.out.println(enemy.getHand());
         System.out.println("You now have: " + chips + " chips.");
      }
               System.out.println("(C)ontinue or (Q)uit");
         qORc = in.next();
      }while(chips > 0 && qORc.equalsIgnoreCase("c"));

   }//end main

}//end class

我希望能够得到不同的返回语句,这样我实际上可以设置胜利方面和失败方面,但如果两个玩家打成平手,也可以设置分裂方面。

标签: java

解决方案


您要返回三个结果,它们是:WIN、LOSE 和 TIE,对吗?

在这种情况下,您必须使用三个不同的变量,例如,

public String Win = "Win",Lose = "Lose",Split = "Split"; 

并使用其他变量来存储类似的结果result并将此结果返回到getWin(). 见下面的代码:

import java.util.Random;
import java.util.Scanner;
class BlackJackPlayer{
   //Keep the data secure by using private
   private String hand;
   private int sum;
   private int numAces;
   private static Random gen = new Random();
   public String Win = "Win",Lose = "Lose",Split = "Split";
   private String result = "";
   private final int ACE = 1;
   private final int JACK = 11;
   private final int QUEEN = 12;
   private final int KING = 13;

   //constructor
   public BlackJackPlayer(){
      hand = "";
      sum = 0;
      numAces = 0;
   }

   //Getter for hand variable
   public String getHand(){
      return hand;
   }

   public String setHand(){
      hand = " ";
      return hand;
   }

   //Getter for sum variable
   public int getSum(){
      return sum;
   }

   public void hit(){
      //local variable
      int currentCard = gen.nextInt(13) + 1;

      if(currentCard > ACE && currentCard < JACK){
         sum += currentCard;
         hand += currentCard + "   ";
      }
      else if(currentCard == ACE){
         sum += 11;
         numAces++;
         hand += "A  ";
      }

      else if(currentCard == QUEEN){
         sum += 10;
         hand += "Q  ";
      }

      else if(currentCard == QUEEN){
         sum += 10;
         hand += "Q  ";
      }

      else if(currentCard == KING){
         sum += 10;
         hand += "K  ";
      }//Ends Else If

      //Is Ace 1 or 11
      if(sum > 21 && numAces > 0){
         numAces--;
         sum -= 10;
      }

    }//ENDS HIT

   public String getWin(BlackJackPlayer other) {
      if(sum > 21){
         result = Win;
      }
      else if(sum < other.getSum()){
          result = Lose;
      }
      else if(sum == other.getSum()){
          result = Split;
      }
   return result;
  }
}//end main

class BlackJackGame{
    public static void main(String args[]){
       BlackJackPlayer you = new BlackJackPlayer();
       BlackJackPlayer enemy = new BlackJackPlayer();
       int chips = 100,bet,winnings,multiply = 2;
       String qORc;
       Scanner in = new Scanner(System.in);

       String choice;
       do{
          you.setHand();
          enemy.setHand();
          you.hit();
          enemy.hit();
          enemy.hit();
          System.out.println("Chips: " + chips);
          System.out.println("How much do you want to bet");
          bet = in.nextInt();
          chips -= bet;
          System.out.println("You bet: " + bet + ", You now have " + chips + " chips");
          do{
             System.out.println("Your Cards:  " + you.getHand());         
             System.out.println("(H)it or (S)tand");
             choice = in.next();
             if(choice.equalsIgnoreCase("h")){
                 you.hit();
             }
          }while(choice.equalsIgnoreCase("h"));

          while(enemy.getSum() < 16){
             enemy.hit();
          }
          String result = you.getWin(enemy);
          System.out.println(result);
          if(result == you.Win){
              System.out.println("You Win");
              System.out.println(enemy.getHand());
              winnings = bet * multiply;
              chips += winnings;
              System.out.println("You now have: " + chips + " chips!");
          }
          else if (result == you.Lose){
              System.out.println("You Lose");
              System.out.println(enemy.getHand());
              System.out.println("You now have: " + chips + " chips.");
          }else{
              System.out.println("You Split");
          }
          System.out.println("(C)ontinue or (Q)uit");
         qORc = in.next();
     }while(chips > 0 && qORc.equalsIgnoreCase("c"));

   }//end main

}

推荐阅读