Magic 8 Ball не печатает все время java - PullRequest
1 голос
/ 21 сентября 2019

Я пытаюсь заставить мой код работать 100% времени на добавленные мной проценты.Проценты перечислены по логическим значениям.Я новичок в Java и буду принимать любую помощь.Это мой код, и он не работает все время, как волшебный шар 8, если Мой код.

public class Assessment_Unit_1 {
public static void main(String[] args) {
    boolean good = Math.random() < .13;
    boolean notNow = Math.random() < .37;
    boolean yes = Math.random() < .24;
    boolean never = Math.random() < .26;
    System.out.println("You rolled the Magic 4 Ball:");
    System.out.println("All Signs Say:");
    if (good) {
        System.out.println("Prospects Good");
    }
    else if (notNow) {
        System.out.println("Not now");
    }

    else if (yes) {
        System.out.println("yes");
    }

    else if (never) {
        System.out.println("never");
        }
    }
}   

Любая помощь будет признательна!

1 Ответ

0 голосов
/ 21 сентября 2019

Когда вы вызываете Math.Random (), он возвращает новое значение между 0 и 1. Поэтому возможно, что первое math.random() вернет больше 0,13, а следующее - другое число больше 0,37, следующее math.random () значение больше, чем 0,24, а следующее другое другое значение, которое может быть больше, чем 0,26 ...

Если вы изменили оператор if else просто на операторы if, это возможноэто может вывести более одного ответа!Это явно не то, что вы хотите.

Вам нужен только один результат, верно?С вероятностью 13%, 37%, 24% и 26% это мое предположение.Ваша логика кода немного не в порядке.Следуя структуре вашего кода, вам нужно определить одну переменную, которую вы проверяете четыре раза, например double rndDecimal = math.random(), затем проверьте, если rndDecimal > 0 && rndDecimal < 0.13 for the first boolean, или для второй она будет между 0,13 и 0,5 (0,13 + 0,37), а затем между 0,5 и 0,74следующие 0,74 и 1!Это всегда даст вам результат

...