2013-10-27 3 views
0

В сущности, последнее, что мне нужно сделать для этой математической викторины. Мне нужно запрограммировать, я должен спросить у пользователя, хотят ли они ответить на другие проблемы, если да, повторите все в основном методе , Если нет, распечатайте до свидания. Нет, это легко, но я не уверен, как сказать ему, чтобы повторить основной метод, если они скажут «да». Вот код в моем основном методе.Rerun Main method from Main Method

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!"); 

} 

Теперь я пытался что-то вроде,

, если "Y" .equals (moreProblems)) { копировать и мимо основного метода }

Но есть ошибки, требующие бесконечных циклов, так как вам нужно будет иметь больше проблем в каждом случае, если да, то есть это никогда не закончит кодирование мудрым, вы будете продолжать копировать и вставлять навсегда.

ответ

1

Что вы можете сделать, это переместить все в main() в другой статический метод, назовите его interact(). Затем в main() у вас есть логика, которая вызывает interact(), пока пользователь хочет взаимодействовать с вашей программой. Другими словами, поместите математическую викторину в один метод, а бизнес представляет викторину в main(). Ваша программа будет легче читать и легче модифицировать, если необходимо.

+0

Я думал об этом, однако уступке утверждает, что все методы должны быть вызваны из основного метода, так что тест должен остаться в основной способ часть. –

+0

Ну, тогда идите с циклом while, как это было предложено другими. –

3

Вы могли бы вложить весь код, который вы хотите «повторно запустить» в время цикла:

boolean run = true; 
while (run) { 
    // Here your code 
    // Here input if user want to re-run 
    if (getUserChoice("").equals("NO")) 
     run = false; 
} 
1

Положите все это в большой сделай время цикла:

boolean more = false; 

do { 

    // all your code 

    more = "Y".equals(moreProblems); 

} while (more); 

Или если ваш сканер объявлен вне цикла, вы можете просто:

do { 

    // all your code 

} while ("Y".equals(in.next())); 
2

Альтернатива тому, что предложили другие, это метод d Я предпочитаю:

while(true) { 
    //do all your stuff 
    if(/*some exit condition*/) { break; } 
} 
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; 
    } 
} 
+0

Может кто-нибудь сказать мне, почему я получил голос? – Vikram

Смежные вопросы