0

3 つの乱数の 3 つの配列を生成し、すべての数字が一致するかどうかをチェックするスロット マシン クラスを作成しています。1000 台のスロット マシンを実行して勝者を数える別のプログラムを作成しました。私が直面している問題は、常に勝者がゼロになることです。何か助けはありますか?それぞれのコードは次のとおりです。

SlotMachine クラス

import java.util.*;

public class SlotMachine{

    private int[] row1 = new int[3];
    private int[] row2 = new int[3];
    private int[] row3 = new int[3];

    public SlotMachine() {
        playMachine();
    }

    public void playMachine() {

        Random rand = new Random();

        for (int counter = 0; counter < 3; counter++) {
            row1[counter] = rand.nextInt(10);
        }

        for (int counter = 0; counter < 3; counter++) {
            row2[counter] = rand.nextInt(10);
        }

        for (int counter = 0; counter < 3; counter++) {
            row3[counter] = rand.nextInt(10);
        }
    }

    public boolean isWinner() {

        if (row1[0] == row1[1]) {
            if (row1[0] == row1[2]) {
                return true;
            }
        }

        if (row2[0] == row2[1]) {
            if (row2[0] == row2[2]) {
                return true;
            }
        }

        if (row3[0] == row3[1]) {
            if (row3[0] == row3[2]) {
                return true;
            }
        }

        return false;
     }
}

勝利カウンター:

import java.util.*;

public class Play1000SlotMachines {

    public static void main(String[] args) {
        SlotMachine slotMachine = new SlotMachine();
        int count = 0;

        for (int i = 0; i < 1000; i++) {
            if (slotMachine.isWinner() == true) {
                count = count + 1;
            }
        }

        System.out.println("From 1000 slot machines, " + count + " were winners.");
    }
}
4

1 に答える 1

1

スロット マシンを再ロールすることはありません。この実装を反映するために、メソッドの名前も変更しました。1000 もの異なるスロット マシンをプレイしたい場合は、新しいスロット マシンの宣言を for ループに移動します。これにより、スロット マシン クラスの 1000 の異なるインスタンスが作成されます。スロット マシンの単一のインスタンスが作成され、1000 回再生される以下の実装ではありません。重要な違いです。

public class PlaySlotMachine1000Times {
  public static void main(String[] args) {

    SlotMachine slotMachine = new SlotMachine();
    int count = 0;

    for (int i = 0; i < 1000; i++) {
      slotMachine.playMachine();
      if (slotMachine.isWinner())
         count++;
    }
    System.out.println("From 1000 slot machines, " + count + " were winners.");
  }
}
于 2013-01-17T02:31:11.097 に答える