2015-12-01 3 views
1

это мое первое сообщение, поэтому, пожалуйста, несите меня. Я пытаюсь создать программу, которая позволяет пользователю играть в черный дом против компьютера. следующий код позволяет игроку взять свою очередь:Java: Использование моего заявления

//method for the players turn 
    public static void playersTurn() 
    { 
     String playersCard = dealSingleCard(); 
     playerHand.add(playersCard); 
     String playersActualHand = cardRepresentation(playersCard); 
     System.out.println(playersActualHand); 
     //System.out.println(playerHand); 
     System.out.println(calculateHandValue(playerHand)); 
     Scanner in = new Scanner(System.in); 
     System.out.println("Stick or Twist?"); 
     String stickOrTwist = in.next(); 
     String twist = "t"; 
     String stick = "s"; 
     //int total = 0; 
     //int playerTotal = calculateHandValue(playerHand) + total; 

     if (calculateHandValue(playerHand) < 21) 
     { 
      if (stickOrTwist .equalsIgnoreCase (twist)); 
      { 
       dealSingleCard(); 

      } 

     if (stickOrTwist .equalsIgnoreCase (stick)) 
       { 
        calculateWinner(); 
       } 
     } 

    } 

Я не могу показаться, чтобы получить «крутить», если заявление на работу, программа просто останавливается. «Прилипнет, если заявление отлично работает, что я делаю неправильно

+7

'если (stickOrTwist .equalsIgnoreCase (поворот));' - удалить ' ; ' – Eran

ответ

2

Измените код ниже

if (calculateHandValue(playerHand) < 21) 
{ 
    if (stickOrTwist .equalsIgnoreCase (twist)); 
    { 
     dealSingleCard(); 
    } 
    if (stickOrTwist .equalsIgnoreCase (stick)) 
    { 
      calculateWinner(); 
    } 
} 

с

if (calculateHandValue(playerHand) < 21) 
{ 
    if (stickOrTwist .equalsIgnoreCase (twist)) 
    { 
     dealSingleCard(); 
    } 
    if (stickOrTwist .equalsIgnoreCase (stick)) 
    { 
      calculateWinner(); 
    } 
} 

линия терминатора.? ';' Не следует использовать с если условие

3

У вас есть немного синтаксическую ошибку, так как вы поставите точку с запятой после, если условия, здесь:..

if (stickOrTwist .equalsIgnoreCase (twist)); 

Удалите его, и он должен работать нормально

1

Единственная проблема с вашим кодом заключается в том, что вы разместили ';' после того, если statemt.So компилятор не выполняет тело if.Try удаления с запятой, как:

  if (stickOrTwist .equalsIgnoreCase (twist)) 
      { 
       dealSingleCard(); 

      } 
0

Правилами блэкджек (или понтон, как его называли, когда я рос) в том, что игрок может многократно крутить до тех пор он (а) не решает либо придерживаться или ее рука значение превышает 21. Это повторяется поведение отсутствует из вашего кода.

Вместо того

if (calculateHandValue(playerHand) < 21) 

вы должны иметь цикл

while (calculateHandValue(playerHand) < 21) 

и внутри цикла while вы спрашиваете, будет ли игрок придерживаться или крутить. Выйдите из петли, если игрок встанет, а затем обработает условие перебора. Вы должны только вызвать метод calculateWinner(), как только все игроки сыграли.

0

Я просто предположить, от того, как вы использовали dealSingleCard() в начале Methode вы хотите TODO следующее:

if(stickOrTwist.equalsIgnoreCase(twist)){ 
      playerHand.add(dealSingleCard()); 
} 
Смежные вопросы