Solved

A scoring system

Posted on 2006-11-20
17
277 Views
Last Modified: 2010-03-31
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
Comment
Question by:ishcmc
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 9
  • 8
17 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 17981707
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 Comment

by:ishcmc
ID: 17981746
what do u mean?
0
 

Author Comment

by:ishcmc
ID: 17981754
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();
       
            if (user_input.compareToIgnoreCase(answers[i])==0)
            {
                System.out.print(user_input);
                System.out.println(" is correct");                
            }
       
            else
            {
                System.out.print(user_input);
                System.out.println(" is incorrect");
                System.out.println("correct answer is: " +(answers[i]));                
            }
           
/*
            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
Instantly Create Instructional Tutorials

Contextual Guidance at the moment of need helps your employees adopt to new software or processes instantly. Boost knowledge retention and employee engagement step-by-step with one easy solution.

 
LVL 86

Accepted Solution

by:
CEHJ earned 500 total points
ID: 17981849
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();
       
            if (user_input.compareToIgnoreCase(answers[i])==0)
            {
                numCorrect++;
                System.out.print(user_input);
                System.out.println(" is correct");                
            }

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

Author Comment

by:ishcmc
ID: 17982079
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 Comment

by:ishcmc
ID: 17982120
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
 
LVL 86

Expert Comment

by:CEHJ
ID: 17982141
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 Comment

by:ishcmc
ID: 17982164
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 Comment

by:ishcmc
ID: 17982180
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
 
LVL 86

Expert Comment

by:CEHJ
ID: 17982193
You need to put those variables in the method in which you're looping and asking questions
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 17982219
>>... 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 Comment

by:ishcmc
ID: 17982261
>>You need to put those variables in the method in which you're looping and asking questions

what do u mean?
0
 

Author Comment

by:ishcmc
ID: 17982269
putting the score in the sub method, no need to put it in the main?
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 17982280
>>what do u mean?

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

Author Comment

by:ishcmc
ID: 17982333
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
 
LVL 86

Expert Comment

by:CEHJ
ID: 17982419
>>for (int i=0; i<=6; i++)

For that, you need to have 7 questions
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 17982449
:-)
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Viewers learn about the scanner class in this video and are introduced to receiving user input for their programs. Additionally, objects, conditional statements, and loops are used to help reinforce the concepts. Introduce Scanner class: Importing…
This video teaches viewers about errors in exception handling.
Suggested Courses

628 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question