Hey everyone!
I think I did fairly well on the coding of the Game Logic Part 2…But I’m stuck trying to run the program and I’m receiving these mistakes. Can someone orient me in the right direction?
On MainActivity:
Error: Main method not found in class MainActivity, please define the main method as:
public static void main(String args)
or a JavaFX application class must extend javafx.application.Application
On main:
Exception in thread “main” java.lang.IndexOutOfBoundsException: Index 0 out-of-bounds for length 0
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:372)
at java.base/java.util.ArrayList.get(ArrayList.java:440)
at MainActivity.chooseNewQuestion(MainActivity.java:30)
at MainActivity.startNewGame(MainActivity.java:22)
at Main.main(Main.java:4)
This is my MainActivity code:
import java.util.ArrayList;
public class MainActivity {
// TODO #1: add integer member variables here
int currentQuestionIndex;
int totalCorrect;
int totalQuestions;
// TODO #2: add ArrayList member variable here
ArrayList<Question> questions = new ArrayList<Question>();
// TODO #3 add startNewGame() here
public void startNewGame(){
Question question1 = new Question(012, "In Community, what's the name of Pierce's company?", "Hawthorne's Products", "Hawthorne inc.", "Hawthorne's Wipes", "Hawthorne and son", 2);
Question question2 = new Question(123, "In SuperStore, what's Cheyenne's boyfriend's name?", "Bo", "Jim", "Kevin", "Max", 0);
Question question3 = new Question(234, "In two Broke Girls, what's the name of the restaurant where Caroline and Max work?", "Williamsburg Coffee", "Williamsburg Diner", "Brooklyn Restaurant", "Han's famous table", 1);
ArrayList<Question> question = new ArrayList<Question>();
question.add(question1);
question.add(question2);
question.add(question3);
totalCorrect = 0;
totalQuestions = question.size();
Question firstQuestion = chooseNewQuestion();
// displayQuestion(firstQuestion);
// displayQuestionsRemaining(questions.size());
}
// TODO #4 add chooseNewQuestion() here
public Question chooseNewQuestion(){
int index = generateRandomNumber(questions.size());
currentQuestionIndex = index;
return questions.get(currentQuestionIndex); //QUESTION?
}
// TODO #5 add getCurrentQuestion() here
public Question getCurrentQuestion(){
return questions.get(currentQuestionIndex);
}
// TODO #6 add onAnswerSubmission() here
public void onAnswerSubmission(){
Question currentQues = getCurrentQuestion();
if (currentQues.isCorrect()){
totalCorrect = totalCorrect+1;
questions.remove(currentQuestionIndex);} //QUESTION
// displayQuestionsRemaining(questions.size());
if (questions.size() == 0){
System.out.println("Game over!");
startNewGame();} //Question
else {
chooseNewQuestion();//Question
}
}
// TODO: uncomment after implementing displayQuestion()
// displayQuestion(getCurrentQuestion());
int generateRandomNumber(int max) {
double randomNumber = Math.random();
double result = max * randomNumber;
return (int) result;
}
String getGameOverMessage(int totalCorrect, int totalQuestions) {
if (totalCorrect == totalQuestions) {
return "You got all " + totalQuestions + " right! You won!";
} else {
return "You got " + totalCorrect + " right out of " + totalQuestions + ". Better luck next time!";
}
}
}
And the code on main:
public class Main {
public static void main(String[] args) {
MainActivity mainActivity = new MainActivity();
mainActivity.startNewGame();
System.out.println("Questions remaining: " + mainActivity.totalQuestions);
Question currentQuestion = mainActivity.getCurrentQuestion();
printQuestion(currentQuestion);
// Play the game!
}
static void printQuestion(Question question) {
System.out.println("Question: " + question.questionText);
System.out.println("Option 1: " + question.answer0);
System.out.println("Option 2: " + question.answer1);
System.out.println("Option 3: " + question.answer2);
System.out.println("Option 4: " + question.answer3);
}
}
Thanks so much!