#java #random #while-loop
#java #Случайный #цикл while
Вопрос:
У меня есть проект, над которым я работаю в своем классе Java, и я не могу понять, что такое несколько строк кода.
Проект состоит из подбрасывания монеты и использования различных методов для определения количества орлов или решек, а также того, сколько переворотов произошло на данный момент.
import java.util.*;
public class GVcoin{
// true for heads, false for tails
private boolean isHeads;
private int flips, heads;
private Random r;
//Create the coin
public GVcoin(){
r = new Random();
heads = 0;
flips = 0;
isHeads = true;
}
//Flip the coin by random choosing true / false
public void flip(){
isHeads = r.nextBoolean();
flips ;
if(isHeads){
heads ;
}
}
//return true if coin is currently heads
public boolean isHeads(){
return isHeads;
}
//return String representation of important values
public String toString(){
String str;
str = "Flips: " flips " Heads: " heads " isHeads: " isHeads;
return str;
}
//return number of total flips
public int numFlips(){
return flips;
}
//return number of total heads
public int numHeads(){
return heads;
}
//return number of total tails
public int numTails(){
return flips - heads;
}
//Set the coin to heads (or tails) to start
public void setToHeads(boolean h){
isHeads = h;
}
//Create the coin with a random seed
public GVcoin(int seed){
this();
r = new Random(seed);
}
}
Проблема, которую я, похоже, не могу понять, заключается в другом классе, называемом TossingCoins, и заключается в методе public int consecutiveHeads(GVcoin c, int goal)
public class TossingCoins {
public int countHeads(GVcoin c, int goal){
while(c.numHeads() != goal) {
c.flip();
}
return c.numFlips();
}
public int flipForTails(GVcoin c, int goal){
while(c.numTails() != goal) {
c.flip();
}
return c.numFlips();
}
public int consecutiveHeads(GVcoin c, int goal){
while(c.numHeads() != goal){
c.flip();
}
}
// This method creates a TossingCoins object and calls the method for testing
public static void main(String[] args) {
TossingCoins game = new TossingCoins();
GVcoin c = new GVcoin();
int numHeads = game.countHeads(c, 100);
}
}
Что я пробовал до сих пор, так это посмотреть, не равно ли число орлов целевому значению. Тогда, если оно не равно количеству орлов (цель), я бы установил переворот, чтобы добавить один. Который будет считать 1, 2, 3, 4, 5 и так далее, пока не достигнет количества переворотов, необходимого для достижения количества орлов (цели).
Комментарии:
1. Что
consecutiveHeads
должно возвращаться?2. Он вернет столько переворотов, сколько требуется для записи такого количества последовательных орлов (гол). например (5 голов), поэтому потребуется около 80 переворотов, чтобы получить 5 орлов подряд.
3. Ну, я просто не знаю, как структурировать цикл.
4. Приведенный выше код не работает?
5. Это не так. Я получаю сообщение об ошибке, в котором говорится, что sequutiveheads (c, 5) неправильно возвращает 8 вместо 50