2017-09-29 11 views
1

私の課題の1つは、1と13の間の乱数を1番目に生成し、次に別の数を描画したいかどうかをユーザーに尋ねます。私が悩んでいるのは、1つの新しい乱数が追加された後、どのようにwhileループを終了して、ユーザに望むかを尋ねる方法です別のものを追加してください。私は休憩を使ってみました。あなたは一度だけ乱数を追加することが必要な場合は新しい値でループ中に終了するには?

int randCard = 1 + (int) (Math.random() * ((13 - 1) + 1)); 
    int playerHand = 0 + randCard; 
    System.out.println("START GAME #" + gameNum); 
    System.out.println("Your card is a " + randCard + "!"); 
    System.out.println("Your hand is: " + playerHand); 
    System.out.println("\n1. Get another card"); 
    System.out.println("2. Hold hand"); 
    System.out.println("3. Print statistics"); 
    System.out.println("4. Exit"); 
    System.out.print("\nChoose an Option: "); 
    int selectedOption = menuOptions.nextInt(); 

if (selectedOption == 1) { 

      do { 
       int newRandCard = 1 + (int) (Math.random() * ((13 - 1) + 1)); 

       System.out.println("Your card is a " + newRandCard + "!"); 
       System.out.println("Your hand is: " + (playerHand + newRandCard)); 

       playerHand = (playerHand + newRandCard); 


       break; 

      } 
       while (playerHand <= 21) ; 

////////IDEALLY IT SHOULD PRINT LIKE THIS////// 
Your card is a 4! 
Your hand is: 4 
1. Get another card 
2. Hold hand 
3. Print statistics 
4. Exit 
Choose an option: 1 
Your card is a 9! 
Your hand is: 13 
1. Get another card 
2. Hold hand 
3. Print statistics 
4. Exit 
+0

ループ内にaskingを入れます。プレイヤーはカードを選択しましたが(はい、続行、休憩なし)、ランダムカード、スタックに新しいカードを追加します。スタックが2135を超えると、 が破棄されます。 – Frankie

答えて

0

は、再度ユーザーに

System.out.println("START GAME #" + gameNum); 
int randCard = 1 + (int) (Math.random() * ((13 - 1) + 1)); 
System.out.println("Your card is a " + randCard + "!"); 
int playerHand = 0 + randCard; 
System.out.println("Your hand is: " + playerHand); 
do { 
    System.out.println("1. Get another card"); 
    System.out.println("2. Hold hand"); 
    System.out.println("3. Print statistics"); 
    System.out.println("4. Exit"); 
    System.out.println("Choose an Option: "); 
    int selectedOption = menuOptions.nextInt(); 

    if (selectedOption == 1) { 
     randCard = 1 + (int) (Math.random() * ((13 - 1) + 1)); 
     System.out.println("Your card is a " + newRandCard + "!"); 
     System.out.println("Your hand is: " + (playerHand + newRandCard)); 
     playerHand = (playerHand + randCard); 
    } 
    ...other options to select 
} while (playerHand <= 21) ; 
+0

私はブレークを使用しない場合、プログラムは乱数を追加し続けます。乱数を一度追加するだけで、メニューオプションを再度与える必要があります。 – jaaytbe

+0

私はそれを理想的に印刷するべきものに編集しました。 – jaaytbe

+0

@jaaytbe回答を – nullpointer

0

あなたがあなたのコードを変更することができますが、メニューオプションを与える:これは私がこれまで持っているものですあなただけにしてDO-しばらくサイクルを使用していない、一枚のカードを描きたい場合は、ユーザまでループに次は1

if (selectedOption == 1) { 
    do { 
     ... 
    } while (playerHand <= 21 && selectedOption == 1); 
+0

ちょっと私はこれを試して、それはループの内部にとどまっています。どんな考え? – jaaytbe

0

以外の選択を行います。 do-whileの中にあるもの(休憩なし)を使うだけです。

ユーザーがあなたに指示するまでカードを描きたい場合は、ブール変数を作成し、それをdo-whileサイクルの条件として使用し、サイクルごとに読み込みます。

関連する問題