2016-10-24 6 views
0

私はこのウェブサイトや他のウェブサイトを見て、先生が私に提供した知識を使ってこれを行う方法を考えました。コインフリップで賭けゲームのJavaコードを実装する

基本的に、このプログラムは、頭や尾のコインフリッピングゲームに賭けることができるユーザー入力システムとされています。

これまでのところ、私は何をすべきか運がなかった。誰かに私のためにそれを終わらせることを要求するのではなく、正しい方向に私を助ける。

ありがとうございます。ここで

私のコードは、これまでのところです:

package Homework6; 
 

 
import java.util.Scanner; 
 

 
import java.lang.Math; 
 

 
public class CoinFlip { 
 

 
\t public static void main(String[]args){ 
 
\t 
 
\t Scanner input = new Scanner(System.in); 
 
\t int money = 10; 
 
\t double flip = Math.random(); 
 
\t String heads = "heads"; 
 
\t String tails = "tails"; 
 
\t int bet = input.nextInt(); 
 
\t 
 
\t while(bet < 0 || bet > money){ 
 
\t \t if(true){ 
 
\t \t \t System.out.println("How much do you want to bet?"); 
 
\t \t \t input.next(); 
 
\t \t } 
 
\t } 
 
\t \t 
 
\t System.out.println("Guess if the coin will be heads or tails."); 
 
\t String guess = input.next(); 
 
\t 
 
\t String coin; 
 
\t if (flip <0.5) coin = heads; 
 
\t else coin = tails; 
 
\t 
 
\t if(guess == coin){ 
 
\t \t int correct = money + bet; 
 
\t \t System.out.println("The flip was"+ coin); 
 
\t \t System.out.println("You win" + bet); 
 
\t \t System.out.println("") 
 
\t \t } 
 
\t 
 
\t 
 
\t 
 
\t 
 
\t 
 
\t } 
 
} \t

+1

あなたはあなたの質問をより具体的にする必要があります。あなたは何に問題がありますか?あなたの問題はどこですか? – UnholySheep

+0

私はmath.randomの代わりにrandomクラスを使いますが、多くの点で同じことをしますが、Randomでは範囲を設定することができ、intを提供し、ここで実装をクリーンアップします。また、if文を1行にする必要はありませんが、常に中カッコを入れることをお勧めします。 – DejaVuSansMono

+0

あなたのプログラムは、「あなたはどれくらい賭けたいですか?」という質問以外は何もしないと思います。あなたの 'while-loop'が何度も何度も何度も同じ質問をしてくれるように見えます。とにかく 'if'文を使用しているのはなぜですか? –

答えて

0

あなたのためにいくつかの注意事項(あなたはまだ学生を始めとしているので):

1)あなたのwhileループは少し不十分構築です。そのシステムアウトは、何らかの入力があるまで常にスクリーンに印刷されます。 if文は本質的に条件付きのチェックをしません。それは常に真実です。

2)当初は、どれくらいの賭け金を求めているのですか?あなたは値を入力した後にプロンプ​​トを出すだけです。だから当初プレイしたとき、コンソールは空白になります。しかし実際には、それはいくつかの入力を待っています。

3)コインの状態を変更するためのif文は多少外れています。

4)ユーザーの金額は決して実際には更新されません。最終的な出力は少し参考になります。

5)誰かが最初の勝利を得て再びプレーしたい場合はどうなりますか?彼らはおそらくその銀行を成長させたいと思っています!したがって、銀行> 0の間に実行されるdo/whileの内部全体を網羅することができます。

6)プリミティブタイプを比較する場合は、==演算子のみを使用してください。他のほとんどの時間は、使用するObject.equals(object);

私はあなたのためにそれを完了するために誰かを尋ねていない知っているが、このサイトは情報を共有することで最も効果的です。以下はあなたのために働くはずです、私は広範囲にコメントしました。うまくいけば、これはこの宿題を超えていくつかのことを教えることができます。

public static void main(String[] args) 
{ 
    // Setup some initial variables 
    int bank = 10; 
    double flip = Math.random(); 

    // Instantiate a new Scanner object 
    Scanner input = new Scanner(System.in); 

    // Let the user bet until they run out of money in the bank 
    do 
    { 
     // Ask the user how much money to wager 
     System.out.println("How much do you want to bet?"); 
     int bet = input.nextInt(); 

     // The bet was invalid 
     while(bet < 0 || bet > bank) 
     { 
      System.out.println("Invalid bet (" + bet + "). Minimum bet = 0. Maximum bet = " + bank); 
      bet = input.nextInt(); 
     } 

     // Ask the user for which side 
     System.out.println("Heads or tails?"); 
     String guess = input.next(); 

     // The coin is either heads or tails, so it can always start as tails. If the value goes under .5, change it to heads. If not, it remains the same, "tails". 
     String coin = "tails"; 
     if (flip < 0.5) 
     { 
      coin = "heads"; 
     } 

     // Tell the user the result, regardless of win or lose 
     System.out.println("The flip was " + coin); 

     // Update the user's bank and inform them of the new value 
     if(guess.equalsIgnoreCase(coin)) // this allows for any form of HeaDs or TaILs 
     { 
      bank += bet; 
      System.out.println("You win " + bet); 
      System.out.println("Your bank contains " + bank); 
     } 
     else 
     { 
      bank -= bet; 
      System.out.println("You lose " + bet); 
      System.out.println("Your bank contains " + bank); 
     } 
    } 
    while(bank > 0); 

    // Goodbye message 
    System.out.println("Thanks for playing!"); 

    // Don't forget to close your Scanner object! 
    input.close(); 
} 
+0

ありがとうございます!これはまさに私が必要なもののように見えます!ほんとうにありがとう! – Southpaw

+0

私も私の仕事を見ていて、頭や尾の文字列を使わなくてもいいと分かった。私はint 0または1を使用して頭や尾に割り当てることができます。 私はおそらくそれを本当に混乱させましたが、プログラムを書くのが少し楽になりました。 – Southpaw

+0

@Southpawあなたは私の "回答"をマークできますか? –

1

可能無限ループ修正するには:

 do{ 
      System.out.println("How much do you want to bet?"); 
      bet = input.nextInt(); 
     } 
     while(bet > 0 && bet > money); 

を、それが本当に必要ではないですので、あなたがif文をドロップすることができます。ただし、変数betを宣言して正しいスコープにする必要があります。

if(guess.equals(coin)) // proper way of checking Strings 

推測値とコインの値をチェックするためにこのフォームを使用します。

+1

に遭遇していた問題で、私のwhileループに必要なものとまったく同じように見えます。ほんとうにありがとう! 私はおそらくそれの残りの部分を動作させることができると思います! ありがとうございました。 – Southpaw

+0

あなたは、幸運と多くの楽しい学習の大歓迎です:D –

0

申し訳ありませんが、あなたがこれに非常に苦労しているので、私はこれをどのように達成したのかをレイアウトします。

あなたのコードから取得した2つの変数が必要です。私はこれらを以下に使用しました。

Scanner input = new Scanner(System.in); 
int money = 10; 
String heads = "heads"; 
String tails = "tails"; 
int bet = 0; 
String guess; 
String coin; 

ループが必要です。 whileループが既にありますが、それは行いますが、私の見ているようにあなたの条件は正しくありません。あなたは私がとしてお金を賭けていないか、あなたが持っているより多くのお金を賭けた場合、このループを入力bet < 0 || bet > moneyをテストしています "私はあなたがそれとは反対にしたいと思う。あなたがお金が足りなくなったら私はまた追加しました。

while(bet > 0 || bet < money || money <= 0) 

ループの内部用です。ここでは、特定の順序でいくつかのことをしたいと思っています。

  1. 賭けたい金額を質問し、適切な変数でそれを読んでください。
  2. 彼らの推測が何であるかを質問し、適切な変数でそれを読んでください。
  3. 文はあなたがflipheadsまたはtailsだった、しかし、私はflip変数を処分した、と直接Math.random() < 0.5を使用するかどうかを決定する必要がある場合は、あなたを使用してください。
  4. 推測とフリップを確認してください。それらが正しい場合は、betmoneyに追加して何らかのメッセージを表示します。
  5. 間違っている場合は、お金からベットを差し引いて、メッセージを表示するなど、必要な操作を行います。

その後、プログラムがやり直されます。

+0

ええ、私はそれをちょっと書いたと思いました。オペレーター。手伝ってくれてどうもありがとう!ほんとうにありがとう!あなたたちは人生の節約者です – Southpaw

関連する問題