Покерная игра Ошибка логики Java

if (first == 11)
{card1s = "Jack";
}else {
if (second == 11)
{card2s = "Jack";
} else {
if (third == 11)
{card3s = "Jack";
} else {
if (fourth == 11)
{card4s = "Jack"; }
else {
if (fifth == 11)
{card5s = "Jack"; }
else {
if (first == 12)
{card1s = "Queen"; }
else {
if (second == 12)
{card2s = "Queen"; }
else {
if (third == 12)
{card3s = "Queen"; }
else {
if (fourth == 12)
{card4s = "Queen"; }
else {
if (fifth == 12)
{card5s = "Queen"; }
else {
if (first == 13)
{card1s = "King"; }
else {
if (second == 13)
{card2s = "King"; }
else {
if (third == 13)
{card3s = "King"; }
else {
if (fourth == 13)
{card4s = "King"; }
else {
if (fifth == 13)
{card1s = "King"; }
else {
if (first == 1)
{card1s = "Ace"; }
else {
if (second == 1)
{card2s = "Ace"; }
else {
if (third == 1)
{card3s = "Ace"; }
else {
if (fourth == 1)
{card4s = "Ace"; }
else {
if (fifth == 1)
{card5s = "Ace"; } else { card1s = null; card2s = null; card3s = null; card4s = null; card5s = null;
}}}}}}}}}}}}}}}}}}}} if ((first >= 11) | (first == 1))
System.out.println("The first card is: " + card1s + first);

Это часть моей покерной программы, которая используется для перевода карточки в словах (например, 11 - это Джек, а 12 - королева), результат должен печатать переведенное слово вместе с числом, которое используется для определения слова, Программа компилируется без проблем, но проблема в том, что когда я запускаю эту программу, она создаст "Первая карта: Jack13" или "Queen13".

1 ответ

У вас есть много повторяющегося кода, а switch более apporpriate здесь. Также вы должны использовать методы. Пример:

public static void main(String[] args) { // ... String card1s = getCardAsString(first); // ... if ((first >= 11) || (first == 1)) System.out.println("The first card is: " + card1s + first);
}
private static String getCardAsString(int i) { switch (i) { case 1: return "Ace"; case 11: return "Jack"; case 12: return "Queen"; case 13: return "King"; default: return String.valueOf(i); // or return null; not sure what you need }
}

if s:

private static String getCardAsString2(int i) { if (i == 1) return "Ace"; if (i == 11) return "Jack"; if (i == 12) return "Queen"; if (i == 13) return "King"; return String.valueOf(i);// or return null;
}

licensed under cc by-sa 3.0 with attribution.