0

基本的に、プログラミングしなければならないこの数学クイズで最後に行う必要があるのは、ユーザーにさらに問題に答えたいかどうかを尋ねることです。そうであれば、メイン メソッドのすべてを再実行します。いいえの場合は、さようならを印刷します。いいえは簡単ですが、はいと言った場合にメインメソッドを再実行するように指示する方法がわかりません。これが私のメインメソッドのコードです。

 public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    int digit = 0;

    String result1 = getUserChoice("");

    digit = getNumberofDigit1(digit);

    int numberOfProblems = amountOfProblems();

    for (int i = 0; i < numberOfProblems; i++) {
    int number1 = getRandomNumber1(digit);
    int number2 = getRandomNumber2(digit);

    System.out.println("Enter your answer to the following problem: \n" + 
            number1 + result1 + number2);
    int correctAnswer = getCorrectAnswer(number1, result1, number2);

    int userAnswer = getUserAnswer();

    CheckandDisplayResult(correctAnswer, userAnswer);
    }
        System.out.println("Would you like to solve more probelms(Y/N)? ");
        String moreProblems = in.next();

        if ("Y".equals(moreProblems)){
            digit = 0;

    result1 = getUserChoice("");

    digit = getNumberofDigit1(digit);

    numberOfProblems = amountOfProblems();

    for (int i = 0; i < numberOfProblems; i++) {
    int number1 = getRandomNumber1(digit);
    int number2 = getRandomNumber2(digit);

    System.out.println("Enter your answer to the following problem: \n" + 
            number1 + result1 + number2);
    int correctAnswer = getCorrectAnswer(number1, result1, number2);

    int userAnswer = getUserAnswer();

    CheckandDisplayResult(correctAnswer, userAnswer);
    }
        System.out.println("Would you like to solve more probelms(Y/N)? ");
        moreProblems = in.next();

          if ("Y".equals(moreProblems)){

        }
        System.out.println("Thank you for taking this quiz, Goodbye!");

}

今、私は次のようなことを試しました、

if "Y".equals(moreProblems)){ main メソッドをコピーして貼り付ける }

しかし、それには無限ループが必要になるというエラーがあります。これは、yes の場合ごとにより多くの問題ステートメントが必要になるためです。つまり、コーディングが賢明に終了することはなく、コピーと貼り付けを永遠に続けることになります。

4

5 に答える 5

3

「再実行」したいすべてのコードを while ループで囲むことができます。

boolean run = true;
while (run) {
    // Here your code
    // Here input if user want to re-run
    if (getUserChoice("").equals("NO"))
        run = false;
}
于 2013-10-27T04:27:25.723 に答える
2

他の人が提案したものの代わりに、これは私が好む方法です:

while(true) {
    //do all your stuff
    if(/*some exit condition*/) { break; }
}
于 2013-10-27T04:30:30.613 に答える
1

できることは、すべてmain()を別の静的メソッドに移動して、それを呼び出すことinteract()です。次に、ユーザーがプログラムと対話したい限りmain()呼び出すロジックを用意します。interact()つまり、数学クイズを 1 つのメソッドに入れ、クイズを提示する業務をmain(). プログラムは読みやすくなり、必要に応じてさらに変更しやすくなります。

于 2013-10-27T04:26:33.403 に答える
1

すべてを大きな do-while ループに入れます。

boolean more = false;

do {

    // all your code

    more = "Y".equals(moreProblems);

} while (more);

または、スキャナーがループの外で宣言されている場合は、次のことができます。

do {

    // all your code

} while ("Y".equals(in.next()));
于 2013-10-27T04:27:46.850 に答える
0

このプロトタイプが役立つと思います

import java.util.Scanner;
 public class MathsClass {
    public static void main(String[] args){
        MathsClass object = new MathsClass();

        while(object.response())
            object.mathsQuiz();

    }

    public void mathsQuiz(){
        //your quiz functionalities
        System.out.println("Add two nos");
    }

    public boolean response(){
        System.out.println("Would u like to solve more problems? ");
        Scanner scanner = new Scanner(System.in);
        boolean response = scanner.nextBoolean();

        return response;
    }
}
于 2013-10-27T04:39:38.547 に答える