2014-04-12 3 views
0
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».Покер-игра Ошибка Java Logic

+0

Сначала научиться 'еще оператор if' и отступы правильно. Это сэкономит вам столько фигурных скобок, и у вас будет меньше строк кода. Http://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html –

+0

У меня ужасное чувство, что вы не должны иметь сделал все эти 'если так. Возможно, это даст вам некоторые идеи ... http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html – CodeCamper

+0

Спасибо за совет, я использую много, если и еще, потому что я нахожусь много ошибок «else without if» при использовании else if. Узнайте, что в другое время :) – user3527135

ответ

0

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

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; 
} 
+1

.. и перечисления для предотвращения опечаток – maklemenz