When i try to complile it says
SlotMachineReel.java:175: missing return statement

I think its because all my returns are in "if" statements and it needs a default return.
line 128
&
line 175

Thanks in advance for any help

/**
  * Constructs a new reel with its current face randomly set to
  * one of the 6 symbols on this reel.
  */

   public class SlotMachineReel{
      private String face;
      private int slot; 
   
      /** 
      * Cherry = 0
      * Watermelon = 1
      * Lemon = 2
      * Bell = 3
      * Number 7 = 4
      * Coin = 5
      */
      public SlotMachineReel() {
         this.face = spin();
      }
      
   /**
   * Spins this reel.  This randomly sets this reel's face to
   * one of its 6 symbols: "CHERRY", "MELON", "LEMON", "COIN",
   * "BELL", or "SEVEN".
   *
   * Returns the new symbol showing on this reel after the spin.
   */
      public String spin() {
         this.slot = (int) (Math.random()*6);
         switch(this.slot){
            case 0: 
               return face = "Cherry";
            case 1: 
               return face = "Watermelon";
            case 2: 
               return face = "Lemon";
            case 3: 
               return face = "Bell";
            case 4: 
               return face = "7";
            case 5: 
               return face = "Coin";
            default: 
               return face = "Error";
         }    
      }  
   
   /**
   * Returns the current face of this reel.  This is the same
   * value as returned by the last call to spin().
   */
      public String getFace() {
         return face;
      }
   }
   
   class SlotMachine {
      private boolean lFruit;
      boolean cFruit;
      boolean rFruit;
      boolean dFruit;
      private SlotMachineReel left = new SlotMachineReel();
      private SlotMachineReel center = new SlotMachineReel();
      private SlotMachineReel right = new SlotMachineReel();
      
      
      public SlotMachine(){
         this.left = left;
         this.center = center;
         this.right = right;
      }
      public void pullHandle(){
         left.spin();
         center.spin();
         right.spin();
      }
      public String toString(){
         return (this.left.getFace() + " | " + this.center.getFace() + " | " + this.right.getFace());
      }
      
        /**
   * Returns the payout multiplier for the combination of
   * faces currently on the front of this slot machine.
   * <p>
   * The payout table is given below.  In this table,
   * "fruit" means CHERRY, MELON, or LEMON;
   * # means a symbol that matches one of the other 3 symbols;
   * $ means a unique symbol (does not match any other shown); and
   * ? means any symbol).
   *
   * <pre>
   *         REEL FACES       PAYOUT  FREQUENCY  DESCRIPTION
   * ------------------------ ------ ----------- -----------------------------
   *    COIN    COIN    COIN  = 70x  (* 1 = 70) = Coin JACKPOT
   *   SEVEN   SEVEN   SEVEN  = 21x  (* 1 = 21) = Triple 7s
   *     #       #       #    =  7x  (* 4 = 28) = Three of a Kind
   *  $fruit  $fruit  $fruit  =  5x  (* 6 = 30) = Fruit Medley (1 of each fruit)
   *  #fruit   COIN   #fruit  =  3x  (* 3 =  9) = Coin w/ Matching Fruit Pair
   *     #     COIN      #    =  2x  (* 2 =  4) = Coin w/ Matching non-fruit Pair
   *     ?     COIN      ?    =  1x  (*30 = 30) = Coin
   * </pre>
   * <p>
   * Note that, for any payouts involving a single coin, the COIN must be
   * showing on the center reel (just as shown above).
   * <p>
   * Since this slot machine earns 216 tokens per cycle through all
   * permutations, but pays out only 192 tokens for the same cycle,
   * it has a ~89% payout rate.
   * <p>
   * Returns a number between 0 and 70 as given in the PAYOUT column above.
   * Returns 0 if no payout match is found, meaning the player lost his
   * initial bet.
   */
   
      public boolean isFruit(){
      
         if ((left.equals("Cherry"))||(left.equals("Lemon"))
         ||(left.equals("Watermelon"))){
            return lFruit = true;
         }
         if ((right.equals("Cherry"))||(right.equals("Lemon"))
         ||(right.equals("Watermelon"))){
            return rFruit = true;
         }
         if ((center.equals("Cherry"))||(center.equals("Lemon"))
         ||(center.equals("Watermelon"))){
            return cFruit = true;
         }
         
      }
      
   
      public int getPayout(){
      //finds if the reels are fruits
                  //If the center reel is a coin
         if (center.equals("Coin")){
            if (left.equals("Coin")&&(right.equals("Coin"))){
               return 70;
               
            }
            //checks left and right reels
            if ((lFruit)&&(rFruit)){
               if (this.left.equals(right)){
                  return 3;
               }
            }
            if (this.left.equals(this.right)){ 
               return 2;
              
            }
            if (center.equals("Coin")){
               return 1;
            }
            
            
         }
         if ((lFruit)&&(cFruit)&&(rFruit)){
            if (!(left.equals(center))&&!(center.equals(right))&&!(right.equals(left))
            &&!(center.equals(left))){
               return 5;
            }
         }
         if (this.left.equals(center)){
            if (this.left.equals(right)){
               if (this.left.equals("7")){
                  return 21;
               }
               if(!(this.left.equals("7"))){
                  return 7;
               }
               
            }
         }
      }
   }

Recommended Answers

All 2 Replies

The compiler is telling you that you are missing return statements. What happens if (in isFruit) if left, center, or right contains an invalid answer for example pear?

Similar thing with the other statement

ah thank you that fixed the problem

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.