0

これは質問です:

クラップスのゲームでは、パス ライン ベットは次のように進行します。クラップス ラウンドでサイコロを最初に振ることを「カムアウト ロール」と呼びます。7 または 11 のカムアウト ロールは自動的に勝ち、2、3 または 12 のカムアウト ロールは自動的に負けます。カムアウトロールで4、5、6、8、9または10が出ると、その数字が「ポイント」になります。プレーヤーは、7 またはポイントがロールされるまでサイコロを転がし続けます。ポイントが最初にロールされた場合、プレーヤーは賭けに勝ちます。7が先に出た場合、プレーヤーは負けます

人間の入力なしでこれらのルールを使用してクラップスをシミュレートするプログラムを作成します。賭け金を要求する代わりに、プログラムはプレーヤーが勝つか負けるかを計算する必要があります。プログラムは、2 つのサイコロを振ることをシミュレートし、合計を計算する必要があります。プログラムが数回再生されるようにループを追加します。プレイヤーが勝った回数と負けた回数をカウントするカウンターを追加します。ゲームを数回プレイした後、勝つ確率(勝ち/罪+負け)を計算し、値を出力します

そして、これが私がこれまでに行ったことです

  import java.util.Scanner;

    public class partb1
 {

    public static void main(String[] args)
 {

int side1=1, side2=1 , roll=1, lose=0, win=0, point=0, answer;
     Double winprob, loseprob;

side1= 1+(int)(Math.random() *6);

     side2= 1+(int)(Math.random() *6);

     Scanner kb = new Scanner(System.in);

     do
     {
     roll = side1+side2;


     if ( roll == 7 || roll == 11)
     {
       System.out.println(" Come out wins");
     winprob = win + 1;

     }
     else if ( roll ==2 || roll ==3 || roll ==12)
     {
       System.out.println(" Come out loses ");
      loseprob = lose +1;

     }

     else
     {
          side1= 1+(int)(Math.random() *6);
     side2= 1+(int)(Math.random() *6);
     point = roll;
   roll = side1+side2;

       System.out.println("The point");
       System.out.println("You won the bet");
       winprob = win + 1;
   while(roll != point || roll!= 7);
        side1= 1+(int)(Math.random() *6);
     side2= 1+(int)(Math.random() *6);
    roll = side1+side2;

     }



     if( roll ==7)

     {
       System.out.println("You lost the bet");
     answer = kb.nextInt();
     } 
     else if (roll == point) {
        System.out.println(win);
    }

  while(true)
       {
    System.out.println(" Do you want to play again? 0 for No, any number for Yes ");

                     if (answer ==0)
                     {
                       break;
                     }

                     winprob = (40/(40+60));
                     System.out.println(" The probability of wining is " + winprob);

                     loseprob = (40/(40-60));
                     System.out.println(" The probability of losing is " + loseprob);




        }
      }
      }
       }

このエラーが発生し続けます

    1 error found:
    File: H:\assignment 3\partb1.java  [line: 84]
    Error: Syntax error, insert "while ( Expression ) ;" to complete DoStatement

何かを見逃したのか、何か間違ったことをしたのかわかりませんか? どんな手掛かり?

4

3 に答える 3

0

answerìntnot であるbooleanため、ステートメント式に単独で表示することはできませんがwhile、明示的breakにループから抜けているため、次のことができます。

while (true) {
于 2013-02-21T21:14:27.250 に答える
0

きれいなプログラミングの問題として、次のようなものを作成しないことをお勧めします

public static void main(String[] args) {
    // do everything here
}

カプセル化の概念をプログラミングに適用し、コードを再利用可能なチャンクに分割します。コードのデバッグがはるかに簡単になり、他のプログラマーはそれを気に入ってくれるでしょう。

于 2013-02-21T21:18:32.537 に答える
0

あなたのコードには複数のエラーがあります。宿題のお手伝いをさせていただきます ;) 最初に適切な IDE でコードを適切に調整して、すべての簡単なエラーを確認できるようにすると、作業が簡単になります。中括弧が一致していないか、欠落しています。

IntelliJ IDEA (または同等のもの) をダウンロードし、Java プログラムをロードし、CRTL-ALT-L を押してコードを「再フォーマット」することをお勧めします。これにより、読みやすくなり、修正が容易になります。

さらに、IDE はエラーの追跡にも役立ちます (「赤い」インクを探してください!)。

たとえば、ここに余分なセミコロンがあり、コードを再フォーマットするとそれが明確になります。

        } else if (roll == point) ;
        System.out.println(win);

あるべきかもしれない

        } else if (roll == point) {
            System.out.println(win);
        }

構文を理解したら、クラスでいくつかのメソッドとフィールドを使用してみませんか? たとえば、適切なメソッドとフィールドを持つことができwin()ますlose()

幸運を!

于 2013-02-21T21:33:41.867 に答える