简体   繁体   English

无法想出使用方法调用的解决方案

[英]unable to come up with a solution to use methods calls

I am working on a lab that requires me to return the number it flips it requires to get heads.我在一个实验室工作,它要求我返回它需要翻转的数字才能获得正面。 I used a for loop, and a while loop but it appears that returning the method values along with the loops is not making the code runnable.我使用了 for 循环和 while 循环,但似乎将方法值与循环一起返回并不能使代码运行。 I would appreciate the assistance.我将不胜感激。 There are two pieces of codes, each different classes calling upon another class.有两段代码,每个不同的类调用另一个类。

import java.util.*;

public class GVCoin {
    
   // true for heads, false for tails
   private boolean isHeads;
   private int flips, heads;
   private Random r;

   public GVCoin() {
     r = new Random();
     heads = 0;
     flips = 0;
     isHeads = true;     
   }

   public void flip() {
     isHeads = r.nextBoolean();  // Flip the coin by randomly choosing true / false
     flips++;  // Increment flip count
     if(isHeads){
         heads++; // Increment heads count if current flip results in heads
     }
   }
    
   public boolean isHeads() {
     return isHeads; // Return true if coin is currently heads
   }    

   public String toString() {
     String str;
     str = "Flips: " + flips + " Heads: " + heads + " isHeads: " + isHeads;
     return str;  // Return String representation of important values
   }    
   
   public int numFlips() {
     return flips;   // Return number of total flips
   }
    
   public int numHeads() {
     return heads;   // Return number of total heads   
   }
    

   public int numTails() {
     return flips - heads; // Return number of total tails   
   }

   public void setToHeads(boolean h) {
     isHeads = h; 
   }

   public GVCoin(int seed) {  // Create the coin with a random seed
     this();
     r = new Random(seed);
   }    
}


public class TossingCoins {
   
   public int flipForHeads(GVCoin coin, int goal) {
      
      int i = 0;
      
      do { 
         coin.flip();
         i++;
         
      } while (i < goal);
      
      
    return i;
        
   }
   
   public static void main(String[] args) {
      TossingCoins game = new TossingCoins();
      GVCoin coin = new GVCoin(15); // Create a GVCoin object with seed value 15
      int numHeads = 100;   // Desire 100 heads
      int totalFlips;
      
      totalFlips = game.flipForHeads(coin, numHeads);
      System.out.println("Total number of flips for 100 heads: " + totalFlips);
   }
}

I managed to figure out the code.我设法弄清楚了代码。 On the method call I simply formatted the code as follows:在方法调用中,我简单地将代码格式化如下:

int flips = 0;

while (coin.numHeads() < goal) {
    coin.flip();
    flips++ ;
}
return flips;

I suggest you not to use seed when you create Random .我建议你在创建Random时不要使用种子。 If you do, the outcome will be always the same.如果这样做,结果将始终相同。

Here some working code.这里有一些工作代码。 I removed some code you wrote which I thought not actually needed.我删除了您编写的一些我认为实际上并不需要的代码。 Cheers!干杯!

class GVCoin {
    private Random r;

    public GVCoin() {
        r = new Random();
    }

    public GVCoin(int seed) {
        this();
        r = new Random(seed);
    }

    public boolean flip() {
        return r.nextBoolean();
    }
}

public class TossingCoins {
    public int flipForHeads(GVCoin coin, int goal) {
        int count = 0;
        int numberOfHeads = 0;
        while (numberOfHeads < goal) {
            count++;
            boolean isHead = coin.flip();
            if (isHead) {
                numberOfHeads++;
            }
        }
        return count;
    }

    public static void main(String[] args) {
        TossingCoins game = new TossingCoins();
        GVCoin coin = new GVCoin();
        int numberOfHeads = 5;
        int totalFlips;

        totalFlips = game.flipForHeads(coin, numberOfHeads);
        System.out.println("Total number of flips for "+ numberOfHeads +  " heads: " + totalFlips);
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM