Советы по методу монет - PullRequest
       6

Советы по методу монет

0 голосов
/ 01 февраля 2020

Мне было поручено создать метод, имитирующий подбрасывание монеты. Я думаю, что мой код здесь довольно solid, только я не могу заставить его показать серию результатов после n чисел сальто. Поэтому вместо того, чтобы показывать HTHHHTTTHTT, я получаю только H или T.

public static void main(String[] args) {
    System.out.println((flipCoin(2, 10)));

}
    public static String flipCoin(int chance, int numFlips) {
        String result = "";
        Random rando = new Random();
        chance = rando.nextInt();
        for (int i = 0; i < numFlips; i++) {
            if (chance % 2 == 0) {
                result = "H";
            }
            else {
                result = "T";
            }
            numFlips++;
        }
        return result;
}

Ответы [ 2 ]

3 голосов
/ 01 февраля 2020

Вы выполняете итерацию более numFlips раз, но на каждой итерации вы вызываете либо result = "H";, либо result = "T";. Это устанавливает значение result равным "H" или "T".

Вместо этого вы должны добавить его. Вы можете сделать это, позвонив result += "T";, или вы можете использовать StringBuilder и позвонить stringBuilder.append("T");.

2 голосов
/ 01 февраля 2020

Вы должны переместить случайное поколение в l oop, чтобы шанс пересчитывался для каждого броска. Что-то вроде

public static String flipCoin(int numFlips) {
            StringBuilder result = new StringBuilder("");
            Random rando = new Random();
            for (int i = 0; i < numFlips; i++) {
                if (rando.nextInt() % 2 == 0) {
                    result.append("H");
                }
                else {
                     result.append("T");
                }
            }
            return result.toString();
    }

Таким образом, вы не получите 10 одинаковых.

Плюс ваш аргумент int chance в

flipCoin(int chance, int numFlips)

является избыточным, потому что вы переопределите его с помощью

chance = rando.nextInt();

позже в коде.

...