2015-03-17 4 views
0

я почти получил эту вещь работает, я просто не могу управлять, чтобы получить:в то время как цикл, если заявления

if((pscore <= card1 +card2)) заявления петли, пока либо палочки игрока или спады.

Из того, что я вижу, он должен работать ... но мне не хватает деталей, и я не могу понять, что.

import java.util.Random; 
import java.util.Scanner; 

class Blackjack 
{ 
public static void main(String[] args) 
{ 
    Random r = new Random(); 
    String name; 
    Scanner scannerIn = new Scanner(System.in); 

     boolean yourTurn = true; 
     boolean dealersTurn =true; 
     int card1 = 1 + r.nextInt(11); 
     int card2 = 1 + r.nextInt(11); 
     int dcard1 = 1 + r.nextInt(11); 
     int dcard2 = 1 + r.nextInt(11); 

     int pscore = card1 +card2; 
     int dscore = dcard1 +dcard2; 

     System.out.println("Welcome to Blackjack ! "); 
     System.out.println("\nScore as close to 21 without going over to win "); 
     System.out.println("\nWhat is your name?"); 
      name = scannerIn.nextLine(); 
     System.out.println("\nHello " + name); 
     System.out.println("\nLet's play some BlackJack!"); 
      System.out.println("\nThe dealer shows:\t" +dcard1); 
     System.out.println("\n\nYour first card is:\t " +card1); 
     System.out.println("\nYour second card is:\t" +card2 ); 
      System.out.println("\nGiving you a grand total of: " +pscore); 


    while (yourTurn) 
    { 
       if ((pscore <= +card1 +card2)) 
       System.out.println("\nWould you like to (H)it or (S)tick?"); 
        String a = scannerIn.nextLine(); 
       if(a.toLowerCase().equals("h")) 
     { 
       int newCard = 1 + r.nextInt(11); 
       System.out.println("\nYour next card is " +newCard); 
        pscore = pscore +newCard; 
       System.out.println("\nGiving you a new total of "+pscore); 

       if ((pscore >=22)) 
      { 
       System.out.println("\nYou Busted! \nSorry! you lose"); 
       yourTurn = false;break; 
      } 
     } 

     else if(a.toLowerCase().equals("s")) 
     { 
      yourTurn = false; 
      System.out.println("\nYou stick at " +pscore); 
      System.out.println("\nNow it's the dealers turn\n Dealer must draw until 17"); 
     } 
     else 
     { 
      System.out.println("\nPlease press H or S"); 
     } 



    while (dealersTurn) 
    { 
     dealersTurn = true; 
     { if ((dscore <= dcard1+dcard2)) 
      System.out.println("\nThe dealers cards were:\n " +dcard1); 
      System.out.println("\nand\n" +dcard2); 
      System.out.println("\nGiving the Dealer a grand total of: " +dscore); 
     } 

     { 
      int newCard1 = 1 + r.nextInt(11); 
      if ((dscore<=17)) 
       System.out.println("\nThe dealer draws a: " +newCard1); 
      dscore = dscore +newCard1; 
       System.out.println("\nGiving the dealer a grand total of: "+dscore); 
     } 
      if ((dscore >=22)) 
     { 
      System.out.println("\nDealer Bust!"); 
      System.out.println("\nThe House loses"); 
      System.out.println("\nYou Win"); 
      dealersTurn = false;break; 
     } 
      else if ((dscore >=pscore)) 
     { 
      System.out.println("\nDealer has " +dscore); 
      System.out.println("\nThe dealer beat you!"); 
      System.out.println("\nThe House Wins!"); 
      dealersTurn = false;break; 
     } 
    } 
    } 
    scannerIn.close(); 
    } 
    } 

Кроме того, у меня есть куча людей, чтобы поблагодарить, помогая мне добраться до этого. Если есть кнопка +1 для людей, я не могу ее найти.

Спасибо за помощь Vincent.

+0

В коде есть несколько ошибок, возможно, вам стоит попробовать отлаживать их в первую очередь. –

ответ

0

Ваш цикл while (yourTurn) не закрывает кронштейн до тех пор, пока цикл while (dealerTurn) не будет закрыт. Это приводит к тому, что дилеры становятся частью цикла yourTurn. Добавить закрывающую скобку над dealersTurn во время цикла следующим образом:

} 
while (dealersTurn) 
{ 

Затем удалите старую закрывающую скобку снизу выше «scannerIn.close()»

Но также, какова цель вашей логики

if ((pscore <= +card1 +card2)) 

Ваш результат = к CARD1 + Card2, а затем, если вы рисуете еще одну карту, ваш счет будет больше, чем эти 2 карты, так как у вас есть 3 карты в настоящее время. Вот почему он также не входит в ваш оператор if.

Смежные вопросы