2015-11-02 3 views
1

Я довольно новичок в java, и мы действительно не рассмотрели методы, но это было необходимо для проекта. Я пытаюсь разместить целые две петли do-while в методе, который я могу вызвать в пределах public void run(). Может ли кто-нибудь помочь мне узнать, как я могу это сделать? Я пытаюсь поместить этот вложенный цикл с внутренними и внешними do-while петель внутри своего собственного метода, возможно, в своем классе такжеJava do-while цикл внутри метода в своем собственном классе

Вот полный код:
раздел, где цикл начинается в do Я пытаюсь поместить его в своем собственном методе и как я могу это сделать?

App.java

import acm.program.*; 

public class App extends ConsoleProgram 
{ 
    public void init() 
    { 
     setSize(300,600); 
    } 
    public void run() 
    { 
     // Counter variables 
     int n = 0; 
     int counter = 0; 
     int score = 0; 

     n = readInt("How many times did you take this quiz: "); 

     /* 
     * Printing questions 
     */ 

     // First Question 
     Questions questionOne = new Questions(); 
     println(" "); 
     questionOne.SetQuestion("Question 1: "); 
     questionOne.SetChoice1("Answer a: "); 
     questionOne.SetChoice2("Answer b: "); 
     questionOne.SetChoice3("Answer c: "); 
     questionOne.SetChoice4("Answer d: "); 
     questionOne.SetCorrectAnswer("b"); 

     // Second Question 
     Questions questionTwo = new Questions(); 
     println(" "); 
     questionTwo.SetQuestion("Question 2: "); 
     questionTwo.SetChoice1("Answer a: "); 
     questionTwo.SetChoice2("Answer b: "); 
     questionTwo.SetChoice3("Answer c: "); 
     questionTwo.SetChoice4("Answer d: "); 
     questionTwo.SetCorrectAnswer("d"); 

     // Third Question (Hard Question) 
     Questions questionThree = new Questions(); 
     println(" "); 
     questionThree.SetQuestion("Question 3: "); 
     questionThree.SetChoice1("Answer a: "); 
     questionThree.SetChoice2("Answer b: "); 
     questionThree.SetChoice3("Answer c: "); 
     questionThree.SetChoice4("Answer d: "); 
     questionThree.SetCorrectAnswer("a"); 

     // CREATE A METHOD FOR THIS DO-WHILE LOOP. 
     do 
     { 
      if (n <= 3) 
      { 
       println("You may now take the quiz!"); 
       println(" "); 
      } 
      else 
      { 
       println("You're out of quiz attempts. You have already taken it 3 times."); 
       break; 
      } 

      do 
      { 
      score = 0; 

      if (counter==5) 
      { 
      println("You scored less than 100%"); 
      println("Take a break! You may retake the quiz on a later date. "); 
      break; 
      } 

      // print question 1 
      println(questionOne.PrintQuestion()); 

      // input answer for question number 1 
      String yourAnswer = readLine("Your answer: "); 
      println(" "); 

      // check if the question 1 is correct, if it is, add 1 to the score++ 
      if (questionOne.IsAnswerCorrect(yourAnswer)) 
      { 
       score++; 
       println("You got it right!"); 
      } 
      else // if its not correct, print you got it wrong 
      { 
       println("You got it wrong!"); 
       println(" "); 
       println(" "); 
      } 

      // print question 2 
      println(questionTwo.PrintQuestion()); 

      // input answer for question number 2 
      String yourAnswer2 = readLine("Your answer: "); 
      println(" "); 

      // check if the question 2 is correct, if it is, add 1 to the score++ 
      if (questionTwo.IsAnswerCorrect(yourAnswer2)) 
      { 
       score++; 
       println("You got it right!"); 
      } 
      else // if its not correct, print you got it wrong 
      { 
       println("You got it wrong!"); 
       println(" "); 
       println(" "); 
      } 

      // print question 3 
      println(questionThree.PrintQuestion()); 

      // input answer for question number 3 
      String yourAnswer3 = readLine("Your answer: "); 
      println(" "); 

      // checking for hard question. To make it easier, we're using boolean to check for the hard question 
      boolean hardQuestion = false; 

      // check if the question 3 is correct, if it is, add 1 to the score++ // hard question becomes true 
      if (questionThree.IsAnswerCorrect(yourAnswer3)) 
      { 
       score++; 
       println("You got it right!"); 
       println(" "); 
       hardQuestion = true; 
      } 
      else 
      { 
       println("You got it wrong!"); 
       println(" "); 
       println(" "); 
      } 
      if (score == 0) 
      { 
       println("You need more practice!"); 
       println(" "); 
      } 

      // if you got at least the hard one right, your score is of 1 and that is what gets printed out 
      else if (score == 1) 
      { 
       if (hardQuestion) 
       { 
        println("Well, at least you got the hard one correct! "); 
        println(" "); 
       } 
       else 
       { 
        // if the other ones are correct, print out this message if hard is wrong 
        println("You need to warm up!"); 
        println(" "); 
       } 
      } 

      // if you got at least two correct 
      else if (score == 2) 
      { 
       if (hardQuestion) 
       { 
        // user got one correct and hard one correct 
        println("You are amazing!"); 
        println(" "); 
       } 
       else 
       { 
        // if hard one was wrong 
        println("You're on your way!"); 
        println(" "); 
       } 
      } 
      else 
      { 
       // all answers are correct including the hard ones 
       println("You are a scholar!"); 
       println(" "); 
       println("Congradulations you passed! You got 100% on the quiz!"); 
       break; 
      } 
       // count number of tries the quiz has been looped 
       counter++; 
       if (counter < 5) 
       { 
        println("You scored less than 100%"); 
        println(" "); 
        println(" "); 
        println("Try again!"); 
        println(" "); 
       } 
      } while (true); // end program loop 

      break; 

     } while (true); // end while loop 
    } // closing public run 
} // closing public class 

Private Струнные вопросы Код:

Questions.java

public class Questions { 
    private String _question; 
    private String _correctAnswer; 
    private String _correctAnswer2; 
    private String _correctAnswer3; 
    private String _choice1, _choice2, _choice3, _choice4; 


    public void SetQuestion(String q) 
    { 
     _question = q; 
    } 
    public String GetQuestion() 
    { 
     return _question; 
    } 

    public void SetCorrectAnswer(String c) 
    { 
     _correctAnswer = c; 
    } 

    public String GetCorrectAnswer() 
    { 
     return _correctAnswer; 
    } 

    public void SetCorrectAnswer2(String b) 
    { 
     _correctAnswer2 = b; 
    } 

    public String GetCorrectAnswer2() 
    { 
     return _correctAnswer2; 
    } 

    public void SetCorrectAnswer3(String a) 
    { 
     _correctAnswer3 = a; 
    } 

    public String GetCorrectAnswer3() 
    { 
     return _correctAnswer3; 
    } 

    public void SetChoice1(String a) 
    { 
     _choice1 = a; 
    } 

    public void SetChoice2(String b) 
    { 
     _choice2 = b; 
    } 

    public void SetChoice3(String c) 
    { 
     _choice3 = c; 
    } 
    public void SetChoice4(String d) 
    { 
     _choice4 = d; 
    } 
    public String PrintQuestion() 
    { 
     String result = " "; 

     result = _question + "\n" + _choice1 + "\n" + _choice2 + "\n" + _choice3 + "\n" + _choice4 + "\n"; 
     return result; 
    } 

    public boolean IsAnswerCorrect(String a) 
    { 
     return _correctAnswer.equals(a); 
    } 



    /*public boolean IsAnswerCorrect2(String b) 
    { 
     return _correctAnswer2.equals(b); 
    }*/ 

    } 
+0

@aioobe это именно то, что я пытаюсь выполнить, но не знаю, как я мог бы сделать метод для цикла. Он не распознает код, когда я просто создаю для него свой собственный класс. – Dmitriy

ответ

1

Вы можете использовать этот код или внести необходимые изменения в соответствии с вашими потребностями , просто он имеет метод, который принимает массив Questions и t курирует операции, вынимая вопросы из массива

import acm.program.*; 

public class App extends ConsoleProgram 
{ 

     int n = 0; 
     int counter = 0; 
     int score = 0; 


    public void init() 
    { 
     setSize(300,600); 
    } 
    public void run() 
    { 
     // reset counter variables 
     n = 0; 
     counter = 0; 
     score = 0; 

     n = readInt("How many times did you take this quiz: "); 

     /* 
     * Printing questions 
     */ 

     // First Question 
     Questions questionOne = new Questions(); 
     println(" "); 
     questionOne.SetQuestion("Question 1: "); 
     questionOne.SetChoice1("Answer a: "); 
     questionOne.SetChoice2("Answer b: "); 
     questionOne.SetChoice3("Answer c: "); 
     questionOne.SetChoice4("Answer d: "); 
     questionOne.SetCorrectAnswer("b"); 

     // Second Question 
     Questions questionTwo = new Questions(); 
     println(" "); 
     questionTwo.SetQuestion("Question 2: "); 
     questionTwo.SetChoice1("Answer a: "); 
     questionTwo.SetChoice2("Answer b: "); 
     questionTwo.SetChoice3("Answer c: "); 
     questionTwo.SetChoice4("Answer d: "); 
     questionTwo.SetCorrectAnswer("d"); 

     // Third Question (Hard Question) 
     Questions questionThree = new Questions(); 
     println(" "); 
     questionThree.SetQuestion("Question 3: "); 
     questionThree.SetChoice1("Answer a: "); 
     questionThree.SetChoice2("Answer b: "); 
     questionThree.SetChoice3("Answer c: "); 
     questionThree.SetChoice4("Answer d: "); 
     questionThree.SetCorrectAnswer("a"); 

     evaluate(new Questions[]{questionOne,questionTwo,questionThree}); 

    } // closing public run 

private void evaluate(Questions[] q){ 
// METHOD FOR DO-WHILE LOOP. 
     do 
     { 
      if (n <= 3) 
      { 
       println("You may now take the quiz!"); 
       println(" "); 
      } 
      else 
      { 
       println("You're out of quiz attempts. You have already taken it 3 times."); 
       break; 
      } 

      do 
      { 
      score = 0; 

      if (counter==5) 
      { 
      println("You scored less than 100%"); 
      println("Take a break! You may retake the quiz on a later date. "); 
      break; 
      } 

      // print question 1 
      println(q[0].PrintQuestion()); 

      // input answer for question number 1 
      String yourAnswer = readLine("Your answer: "); 
      println(" "); 

      // check if the question 1 is correct, if it is, add 1 to the score++ 
      if (q[0].IsAnswerCorrect(yourAnswer)) 
      { 
       score++; 
       println("You got it right!"); 
      } 
      else // if its not correct, print you got it wrong 
      { 
       println("You got it wrong!"); 
       println(" "); 
       println(" "); 
      } 

      // print question 2 
      println(q[1].PrintQuestion()); 

      // input answer for question number 2 
      String yourAnswer2 = readLine("Your answer: "); 
      println(" "); 

      // check if the question 2 is correct, if it is, add 1 to the score++ 
      if (q[1].IsAnswerCorrect(yourAnswer2)) 
      { 
       score++; 
       println("You got it right!"); 
      } 
      else // if its not correct, print you got it wrong 
      { 
       println("You got it wrong!"); 
       println(" "); 
       println(" "); 
      } 

      // print question 3 
      println(q[2].PrintQuestion()); 

      // input answer for question number 3 
      String yourAnswer3 = readLine("Your answer: "); 
      println(" "); 

      // checking for hard question. To make it easier, we're using boolean to check for the hard question 
      boolean hardQuestion = false; 

      // check if the question 3 is correct, if it is, add 1 to the score++ // hard question becomes true 
      if (q[2].IsAnswerCorrect(yourAnswer3)) 
      { 
       score++; 
       println("You got it right!"); 
       println(" "); 
       hardQuestion = true; 
      } 
      else 
      { 
       println("You got it wrong!"); 
       println(" "); 
       println(" "); 
      } 
      if (score == 0) 
      { 
       println("You need more practice!"); 
       println(" "); 
      } 

      // if you got at least the hard one right, your score is of 1 and that is what gets printed out 
      else if (score == 1) 
      { 
       if (hardQuestion) 
       { 
        println("Well, at least you got the hard one correct! "); 
        println(" "); 
       } 
       else 
       { 
        // if the other ones are correct, print out this message if hard is wrong 
        println("You need to warm up!"); 
        println(" "); 
       } 
      } 

      // if you got at least two correct 
      else if (score == 2) 
      { 
       if (hardQuestion) 
       { 
        // user got one correct and hard one correct 
        println("You are amazing!"); 
        println(" "); 
       } 
       else 
       { 
        // if hard one was wrong 
        println("You're on your way!"); 
        println(" "); 
       } 
      } 
      else 
      { 
       // all answers are correct including the hard ones 
       println("You are a scholar!"); 
       println(" "); 
       println("Congradulations you passed! You got 100% on the quiz!"); 
       break; 
      } 
       // count number of tries the quiz has been looped 
       counter++; 
       if (counter < 5) 
       { 
        println("You scored less than 100%"); 
        println(" "); 
        println(" "); 
        println("Try again!"); 
        println(" "); 
       } 
      } while (true); // end program loop 

      break; 

     } while (true); // end while loop 
} 

} // closing public class 
+0

спасибо! это именно то, что я пытался сделать. Теперь мне интересно, как я могу внести изменения и использовать их сам по себе в своем классе. Я скопировал весь этот раздел и поместил его в свой класс, называемый оценкой. Для частного запуска void я получаю «Синтаксическая ошибка на токенах (-ах), неуместная конструкция (ы)». Спасибо, что показали мне, как это работает! – Dmitriy

+0

вы можете передать свой счетчик переменных и массива вопросов через конструктор вашего класса Evaluate, и он может иметь такой метод, как «public void execute()», этот метод имеет код цикла, как только вы создаете объект Evaluate, просто вызовите функцию оценки.execute() и это твоя работа – SSH

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