6

私は少し混乱している問題に取り組んでいます。質問は、あなたが第二次世界大戦中の英国空軍の将軍であると想像してください. イギリスを防衛する飛行機はあと 100 機あります。飛行する各ミッションでは、各飛行機がドイツの対空砲によって撃墜される可能性が 50% あるため、すべてのミッションで飛行機の約半分を失うことになります。各ミッションの後に生き残る飛行機の数と、すべての飛行機が撃墜されるまでに実行できるミッションの数を概算するプログラムを作成する必要があります。

私のプログラムは動かず、何が問題なのかわからないので、イングランドは困っていると思います。この問題を 2 つの while ループで解決しようとしています。外側の while ループは、飛行機が残っている限り別のミッションに送ります。内側の while ループは、実際のミッションをシミュレートします。while ループが存在した後、プレーンの総数が生き残ったプレーンになります。

import acm.program.*; 
import acm.util.*;

public class MissionPlanes extends ConsoleProgram{
public void run(){

  int planes = 100;  /* total number of planes */
  int suvPlanes = 0;  /* surviving planes  */
  int mission = 0;      /* total number of missions */
  int planeCounter = 0;   /* keeps track of the planes flying over the anti plane gun  */


  while (planes > 0){

       while(planeCounter < planes){
             planeCounter++;
             if(rgen.nextBoolean()){   /* I've tried rgen.nextBoolean() with paramaters and with no paramaters */
              suvPlanes += 1;
                   }
            }
    planes = suvPlanes;
    mission++;
 println("The total number of surviving planes you have is " + planes + "after" + missoin + "missions"); 
     }
  }
  private RandomGenerator rgen = RandomGenerator.getInstance();
      }
4

5 に答える 5

3

planeCounter と SurvivingPlanes の両方をリセットする必要があります。

于 2013-06-27T07:01:14.793 に答える
2

あなたのクラスにはメインメソッドがありません(これを単独で実行していると仮定しています)。また、コードにはいくつかの論理エラーとインポート ステートメントがあり、少なくとも私のコンパイラは満足していません。

私はそれをクリーンアップし、メインメソッドを追加しました:

import java.util.Random;

public class MissionPlanes {


    public static void main(String[] args){
        Random rgen = new Random();

        int planes = 100;  /* total number of planes */
        int suvPlanes = 0;  /* surviving planes  */
        int mission = 0;      /* total number of missions */
        int planeCounter = 0;   /* keeps track of the planes flying over the anti plane gun  */


        while (planes > 0){

            while(planeCounter < planes){
                planeCounter++;
                if(rgen.nextBoolean()){   /* I've tried rgen.nextBoolean() with paramaters and with no paramaters */
                suvPlanes ++;
                }
            }
            planes = suvPlanes;
            suvPlanes = 0;
            planeCounter = 0;
            mission++;
            System.out.println("The total number of surviving planes you have is " 
            + planes + " after " + mission + " missions"); 
        }
  }
}
于 2013-06-27T07:07:01.503 に答える
1

プログラムがコンパイルされません。

http://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextBoolean()は、nextBoolean() がパラメーターを取らないことを示していますが、パラメーターを与えています。おそらく、あなたのプログラムはコンパイルされておらず、古いバージョンを実行しています。

于 2013-06-27T06:50:58.640 に答える