не удалось придумать решение для использования вызовов методов

#java

Вопрос:

Я работаю над лабораторией, которая требует, чтобы я вернул число, которое она переворачивает, чтобы получить головы. Я использовал цикл for и цикл while, но, похоже, возврат значений метода вместе с циклами не делает код выполнимым. Я был бы признателен за помощь. Существует два фрагмента кодов, каждый из которых имеет разные классы, вызывающие другой класс.

 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 lt; 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);  } }  

Комментарии:

1. В вашем коде есть несколько проблем. Сначала ваш метод flipForHeads должен вернуть an int . Во-вторых, почему вы создаете еще один экземпляр своего GVCoin метода в своем методе flipForHeads ? В этом нет никакого смысла. У вас уже есть экземпляр этого объекта, переданный в качестве параметра.

Ответ №1:

Я предлагаю вам не использовать семена при создании Random . Если вы это сделаете, результат всегда будет одним и тем же.

Вот какой-то рабочий код. Я удалил написанный вами код, который, как я думал, на самом деле не нужен. Ура!

 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 lt; 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);  } }  

Ответ №2:

Мне удалось разгадать код. При вызове метода я просто отформатировал код следующим образом:

 int flips = 0;  while (coin.numHeads() lt; goal) {  coin.flip();  flips   ; } return flips;