2017-12-17 23 views
-1

編集されました。ループしていないポット値に問題があります。Java Do Whileループの問題

私は開発中の単純なギャンブルゲームで自分のループに問題があります。ゲームは私が望むすべてを、ループバックするまで実行します。私は、ポットを静的な$ 100の金額に戻すことは望ましくありません。 また、新しいダイスロールを与えていません。修正済み(Prodianに感謝)ループが元の金額に戻って戻ってきて、最後のラウンドを考慮しないようです。私は変数の配置が間違っているだけの問題だと感じていますが、私はそれらを動かそうとしました。どんな助けでも大歓迎です!

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

public class gamblinggame { 

    public static void main(String[] args) { 
     Scanner scanner = new Scanner(System.in); 
     Random ran = new Random(); 

     double bet; 
     double pot = 100; 
     int r1 = ran.nextInt(6) + 1; 
     int r2 = ran.nextInt(6) + 1; 
     int r3 = ran.nextInt(6) + 1; 

     System.out.println("*** Gambling Game ***"); 
     System.out.println("Your starting pot is $100, please place a bet less than or equal to the pot."); 

     do { 

      r1 = ran.nextInt(6) + 1; // continues to re-roll dice 
      r2 = ran.nextInt(6) + 1; 
      r3 = ran.nextInt(6) + 1; 

      bet = scanner.nextDouble(); 
      if (bet > pot) { 
       System.out.println("Invalid amount. Please place a new bet."); 
       continue; 
      } 
      if (bet >= 1) { 
       System.out.println("Your new pot is $" + (pot - bet) + "."); 
       System.out.println("Rolling the dice."); 
       System.out.println(
         "You rolled " + r1 + ", " + r2 + ", " + r3 + ". The total amount rolled is " + (r1 + r2 + r3)); 
       if (r1 == r2 || r1 == r3 || r2 == r3) { 
        System.out.println("You win DOUBLE your bet back!"); 
        System.out.println("Your new pot is $" + (pot + (bet * 2)) + "."); 
       } else if (r1 == r2 && r1 == r3 && r2 == r3) { 
        System.out.println("You win TRIPLE your bet back!"); 
        System.out.println("Your new pot is $" + (pot + (bet * 3)) + "."); 
       } else if (r1 + r2 + r3 >= 10) { 
        System.out.println("You win your bet back!"); 
        System.out.println("Your new pot is $" + (pot) + "."); 
       } 
       System.out.println("Enter a new bet equal to or below the pot."); 
      } 


      if (bet > pot) { 
       System.out.println("Invalid amount. Please place a new bet."); 
       continue; 
      } 
      if (bet == 0) { 
       System.out.println("Game Over. Please play again!"); 
      break; 
      } 
     } while (pot > 0); 
    } 
} 
+1

あなたは決して再ロールサイコロ。 –

+0

ループ内には 'pot = startingPot-bet;'があります。あなたが何回ベットを行ったとしても、常に出発ポットに基づいています。 –

答えて

1

あなたがすべき再ロールダイス、再ロールのソリューションは、次のとおりです。

.... 
int r1 = ran.nextInt(6) + 1; 
int r2 = ran.nextInt(6) + 1; 
int r3 = ran.nextInt(6) + 1; 
.... 
do{ 
r1 = ran.nextInt(6) + 1; // again random at the start of do-while loop is necessary 
r2 = ran.nextInt(6) + 1; 
r3 = ran.nextInt(6) + 1; 
.... 
}..... 
+0

'int [] rs = ran.ints(3、1、7);'は代わりです(また、ロールの値はループの外側で必要とされないので、 'do'が不要になる前に)。 –

+0

ありがとうございました!今私は鍋の量に問題があります。 – GChittick

+0

私の英語は理解するのに十分ではありませんか、私は何がポットか分かりません。鍋は何をすべきですか?ポットは何ですか?それが何をすべきか教えてください。それから私はポットにも答えることができます。 – Prodian