1

2 セットのサイコロを 3 回連続で振るゲームを作成しようとしています。ユーザーに 2 ~ 12 の数字を 1 回だけ当ててもらいます。その 1 つの推測が 3 つのロールのいずれかに一致する場合、彼/彼女は勝ちます。そうでない場合、彼/彼女は負けます。結果を表示する別のクラスがあり、それが何回ループしたかを示すカウンターがあります。ユーザーが正しく推測した場合は 0 になり、そうでない場合は 1 になります。ユーザーが正解した場合)。

import javax.swing.JOptionPane;


/**
 * @author Marcus
 *
 */
public class Dice {


    int randomDieNum1;//random number generator for dice
    int randomDieNum2;//random number generator for dice
    private final int   MINVALUE1 = 1, //minimum die value
                        MAXVALUE1 = 6;//maximum die value
    private final int   MINVALUE2 = 1, //minimum die value
                        MAXVALUE2 = 6;//maximum die value
    int userNum = Integer.parseInt(JOptionPane.showInputDialog(null, "Guess a number between 1-12", "Guess a Number", 
            JOptionPane.INFORMATION_MESSAGE));//gets user input
    String result ; //results
    int start = 0  ; //counter to see how many turns were taken
public Dice()
    {
    for (int i = 1 ; i <= 3; i++) 
    randomDieNum1 = ((int)(Math.random()* 100) % MAXVALUE1 + MINVALUE1);
    randomDieNum2 = ((int)(Math.random()* 100) % MAXVALUE2 + MINVALUE2);
    int total = randomDieNum1 + randomDieNum2;
        if (randomDieNum1 + randomDieNum2 != userNum)
        {
            result =  "You did not guess the \n number correctly";
            ++ start;
         }
            else if (randomDieNum1 + randomDieNum2 == userNum)
         {
            result = randomDieNum1 + "+" + randomDieNum2 + "=" + total + "\n" +
            "You guessed the number correctly";
         }
         else 
        {
             result =  "You Did not guess the number correctly";
        }

        }
             public String get() //used in another class to display count
             {
                 String temp;
                 temp = "" + start;
                 return temp;
             }

        }

編集 ありがとうみんな。両方の提案を追加し、ユーザーが正しい答えを得た後にループを停止するためのブレークを追加しました。これは次のようになります。

public Dice()
    {
    for (int i = 1 ; i <= 3; i++) 
    {randomDieNum1 = ((int)(Math.random()* 100) % MAXVALUE1 + MINVALUE1);
    randomDieNum2 = ((int)(Math.random()* 100) % MAXVALUE2 + MINVALUE2);
    int total = randomDieNum1 + randomDieNum2;
        if (randomDieNum1 + randomDieNum2 == userNum)
        {result = randomDieNum1 + "+" + randomDieNum2 + "=" + total + "\n" +
                "You guessed the number correctly";
        ++ turns; //
         break; //stops the loop if condition is meet
         }

         else if(randomDieNum1 + randomDieNum2 != userNum)
        {
             result =  "You did not guess the \n number correctly\n\n";
             ++ turns;
        }
    }
    }
4

2 に答える 2

3

欠けているものは別{としてfor (int i = 1 ; i <= 3; i++) {

if条件で使用されるロジックを再検討する必要がある場合があります

if(x+y != c)
{// do operation A}
else if (x+y == c)
{// do operation B}

else後の条件else-ifは決して実行されません。

于 2013-11-07T04:51:48.723 に答える
1

これはループ内のすべてをカプセル化していません

 for (int i = 1 ; i <= 3; i++)

カプセル化するための括弧がありません

  for (int i = 1 ; i <= 3; i++) {

  }
于 2013-11-07T04:49:34.337 に答える