Аналогично ответу Elundmark ...
Скорее всего, у вас есть метод, который оценивает значение руки блэкджека. Всегда цените тузов в одной точке. Если в руке есть туз, вычислите жесткое значение (все тузы равны +10) и мягкое значение (все тузы).
Если сложное значение не является перебором, верните сложное значение. Если жестким значением является перебор, верните мягкое значение.
пример 1
2, А, А
твердое значение 2 + 1 + 1 + 10 = 14
мягкое значение = 2 + 1 + 1 = 4
жесткое значение <21, поэтому верните сложное значение (значение руки 14) </p>
пример 2
2, А, А, 8
твердое значение = 2 + 1 + 1 + 8 + 10 = 22 (бюст)
мягкое значение = 2 + 1 + 1 + 8 = 12
жесткое значение> 21, поэтому возвращает мягкое значение (значение руки 12)
Традиционное представление о правилах и способе игры состоит в том, что значение туза условно и может иметь два значения: 1 или 11. Эту концепцию сложно реализовать. Программисту намного проще посчитать все тузы как значение одного и условно добавить 10 очков к значению руки. Таким образом, реализация ранга или стоимости вашей карты может оставаться жесткой и простой. Я экспериментировал с этим раньше, возвращая коллекцию значений и пару других методов. Это боль, и она не стоит того, чтобы получить только одно звание Эйса.
Если вы хотите показать alt на экране, например 2/12, вместо того, чтобы возвращать Integer, просто верните объект "BlackjackValue", который содержит Integer и объект String, который вы создаете в методе, который оценивает значение вашей руки .