• Status: Solved
• Priority: Medium
• Security: Public
• Views: 284

# A scoring system

I already created 2 strings 'questions' n 'answers' for a simple quiz program.

Now to do a scoring system. Still dont know how to do it. I try matching the System.out.println(" is correct!");
meaning if it displays " is correct" then counter j++

What is the easiest and simple way to solve this problem?
another way i can think of is when user_input = answers then counter count up.
but i got about 10 questions, dont know how to do it using string.
0
ishcmc
• 9
• 8
1 Solution

Commented:
Surely if you know which are correct, you can increment a variable. Have you got no control of the program  printing 'is  correct'?
0

Author Commented:
what do u mean?
0

Author Commented:
here is a method from my program to display questions n answers

Scanner sc = new Scanner(System.in);

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

System.out.print(questions[i]);
String user_input = sc.next();

{
System.out.print(user_input);
System.out.println(" is correct");
}

else
{
System.out.print(user_input);
System.out.println(" is incorrect");
}

/*
int score = j;

System.out.println();
System.out.print("You scored ");
System.out.print(score);
System.out.print(" out of 6");
*/

}

the codes inside the comment is what needed to be solved.
0

Commented:
Scanner sc = new Scanner(System.in);
int numCorrect, numIncorrect;
numCorrect = numIncorrect = 0;

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

System.out.print(questions[i]);
String user_input = sc.next();

{
numCorrect++;
System.out.print(user_input);
System.out.println(" is correct");
}

(I'll leave it to you to fill in the rest)
0

Author Commented:
wow that was easy just the numCorrect++
the thing is now after each answer it immidiately displays the score
I dont want this, I want it to display after all the questions.
0

Author Commented:
Oh i know why, cos i put it in the for loop.
Compiled and ran again but got this error after running all the questions and doesnt display the score

java.lang.ArrayIndexOutOfBoundsException: 6
at SimpleQuiz.scoreQuestions(SimpleQuiz.java:56)
at SimpleQuiz.main(SimpleQuiz.java:38)
0

Commented:
Get rid of all the System.out stuff and put this at the end:

System.out.printf("You scored %d correct answers and %d incorrect answers out of %d\n", numCorrect, numIncorrect, 6);
0

Author Commented:
i think it's because i put it in the sub method, i should put this in the main
but how do i do this numCorrect++ if all the questions are in the sub?
0

Author Commented:
this

System.out.printf("You scored %d correct answers and %d incorrect answers out of %d\n", numCorrect, numIncorrect, 6);

is too advanced for me right now. could u explain what's going on?
ie the f after print, %d etc
0

Commented:
You need to put those variables in the method in which you're looping and asking questions
0

Commented:
>>... too advanced for me right now. could u explain what's going on?

It's just formatting the output. You can replace that with

System.out.println("You scored " + numCorrect + " correct answers and " + numIncorrect + " incorrect answers out of 6");
0

Author Commented:
>>You need to put those variables in the method in which you're looping and asking questions

what do u mean?
0

Author Commented:
putting the score in the sub method, no need to put it in the main?
0

Commented:
>>what do u mean?

numCorrect and numIncorrect should be declared in the same method as the one that asks the questions
0

Author Commented:
ok, when i ran the program, it displays all the questions correctly but when it hits the

System.out.println("You scored " + numCorrect + " correct answers and " + numIncorrect + " incorrect answers out of 6");

it gives the following:

java.lang.ArrayIndexOutOfBoundsException: 6
at SimpleQuiz.scoreQuestions(SimpleQuiz.java:56)
at SimpleQuiz.main(SimpleQuiz.java:38)
0

Commented:
>>for (int i=0; i<=6; i++)

For that, you need to have 7 questions
0

Commented:
:-)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.