1

私のプログラムはまだ完成していませんが、メソッドを 6 回実行する方法を見つけるのに助けが必要です。問題の出力と答えの計算をメソッドで行う算数ドリルゲームです。理想的には、メソッドを 6 回 (合計で 6 つの数学の問題) 実行した後、"LEVEL ONE COMPLETE" ステートメントを出力します。しかし、実行するたびに、すべての質問の最後に「LEVEL ONE COMPLETE」が出力されます。また、ユーザーが問題を正解するたびに金額 ( int amount = 0;) が増加 ( ) するわけではありません。amount+=150;私は初心者なので、助けていただければ幸いです!

そして、余分なこと..ユーザーが3つの間違った答えを取得した場合にゲームを終了させたい場合、それをコードに含めるにはどうすればよいですか?

ありがとう!

これは、メイン メソッドでメソッドを呼び出す場所です。6 回実行します。

  for (int loop = 0; loop <= 6; loop++) { findAdd() }

これは私が呼び出しているメソッドです(数学の問題が含まれています):

public static int findAdd ()
 {
   Object[] optionsA = {"Yes Please", "Nope! I'm good!"};
   int wrong = 0;
   int amount = 0;
   int increment = 150;
   int questionnum = 0;
   questionnum ++;
   int numOne = (int)(Math.random () * 30);
   int numTwo = (int)(Math.random () * 30);
   int answer = numOne + numTwo;

   String useranswerA = JOptionPane.showInputDialog(null,"Question #" + questionnum + " is for: $" + increment + "\n" + numOne + " + " + numTwo + " = ?", "Question", JOptionPane.INFORMATION_MESSAGE);
    int useranswer = Integer.parseInt(useranswerA);

        if (useranswer != answer)
        {
          wrong ++;
          JOptionPane.showMessageDialog(null,"You got the wrong answer! \n The correct answer is: " + answer + " \n Questions Wrong: " + wrong, "Wrong Answer", JOptionPane.INFORMATION_MESSAGE);
          int y = JOptionPane.showOptionDialog(null,"CASH OUT with a total of $" + amount + "?","Cash Out?", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,optionsA,optionsA[0]);
          if (y == JOptionPane.YES_OPTION) {
            JOptionPane.showMessageDialog(null,"Thanks for Playing!", "Thank You!", JOptionPane.INFORMATION_MESSAGE);
            System.exit(0);
          }
          if (y == JOptionPane.NO_OPTION) {}
        }
        else if (useranswer == answer)
        {
          amount+=150;
          JOptionPane.showMessageDialog(null,"Correct!", "Right Answer", JOptionPane.INFORMATION_MESSAGE);
          int y = JOptionPane.showOptionDialog(null,"CASH OUT with a total of $" + amount + "?","Cash Out?", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,optionsA,optionsA[0]);
          if (y == JOptionPane.YES_OPTION) {
            JOptionPane.showMessageDialog(null,"Thanks for Playing!", "Thank You!", JOptionPane.INFORMATION_MESSAGE);
            System.exit(0);
          }
          if (y == JOptionPane.NO_OPTION) {}
        }


     JOptionPane.showMessageDialog(null,"LEVEL ONE COMPLETE!", "LEVEL 1", JOptionPane.INFORMATION_MESSAGE);
     JOptionPane.showMessageDialog(null,"Cash on Hand: $ " + amount, "Cash", JOptionPane.INFORMATION_MESSAGE);
      return useranswer;
   }
4

3 に答える 3

1

まず、これは関数を 6 回ではなく 7 回呼び出します。

for (int loop = 0; loop <= 6; loop++) { findAdd() }

しかし、もっと重要なことに、この関数はあなたが説明したことを正確に行っています。質問を提示し、応答を取得し、呼び出されるたびに「LEVEL ONE COMPLETE」を出力します。これは、そのように記述したためです。また、変数amountは関数に対してローカルであるため、関数を呼び出すたびに更新され、関数が戻ると値が範囲外になり、計算したばかりの値が破棄されます。

「金額」変数と「LEVEL COMPLETE」メッセージは、どちらも関数の外に移動する必要があります。それをどのように行うかは選択の問題です。おそらく、変数も静的にしたいと思うでしょうamount(表示されていない残りのコードによって異なります)。

于 2013-06-15T18:44:48.473 に答える
0

findAdd()あなたの金額はメソッドの外に書かれる必要があります。

int amount = 0;

以下も、findAdd()メソッド内ではなく for ループの後に表示されるように移動する必要があります。

 JOptionPane.showMessageDialog(null,"LEVEL ONE COMPLETE!", "LEVEL 1", JOptionPane.INFORMATION_MESSAGE);
 JOptionPane.showMessageDialog(null,"Cash on Hand: $ " + amount, "Cash", JOptionPane.INFORMATION_MESSAGE);

例:

int amount = 0;

for (int i = 0; i < 6; i++)
{
    findAdd();
}

JOptionPane.showMessageDialog(null,"LEVEL ONE COMPLETE!", "LEVEL 1", JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,"Cash on Hand: $ " + amount, "Cash", JOptionPane.INFORMATION_MESSAGE);
于 2013-06-15T18:44:52.190 に答える