Computer Science Canada Making a quiz |
Author: | Qamar [ Tue Mar 25, 2008 8:32 am ] |
Post subject: | Making a quiz |
Hi, i'm taking a gr. 11 computer information science course and i need help plz. =) Our teacher has told us to make a multiple choice quiz that has 30 questions and it randomly selects 25 of those questions then tells us what % of a mark we got... and he's barely taught us anything.. can anyone help me here .. or where to even start ? thanks |
Author: | Tony [ Tue Mar 25, 2008 9:45 am ] |
Post subject: | RE:Making a quiz |
you start with making a "quiz" made up of one question, then place that into a 25 step loop. If you do it right, there is _very little_ code that you need to write. |
Author: | Qamar [ Mon Mar 31, 2008 7:30 pm ] |
Post subject: | Re: Making a quiz |
okay... i see how you saying to do this... but i don't have a clue on how to.. haha. like i said. our teacher hasn't taught us much and is expecting us to know stuff this is my code so far... he said its okay to have them in the terminal window. but he'd give us more marks if we could get them in a dialog box or make an applet with radio buttons import java.io.*; public class Quiz { public static void main(String[] args) throws IOException { //Create instances of the InputStream and BufferedReader InputStreamReader reader = new InputStreamReader(System.in); //Buffer the inputstream BufferedReader buffer = new BufferedReader(reader); float mark = 0; float percent = 0; String seeker; System.out.println("Welcome to Qamar and Matt's Java Quiz..."); //Reference the buffer.readLine() command to seeker to grab the input //Must use the equals method to compare strings == is invalid //seeker.equalsIgnoreCase(String) takes input regardless of lowercase and uppercase so m is equal to M System.out.println(" "); System.out.println("Question 1"); System.out.println("What does OOP stand for ??"); System.out.println("A. Object Oriented Programming"); System.out.println("B. Official Organized Police"); System.out.println("C. Origins of Packets"); System.out.println("D. It doesn't stand for anything"); seeker = buffer.readLine(); if(seeker.equalsIgnoreCase("a")) { mark = mark+ 1; } System.out.println(" "); System.out.println(" "); System.out.println("Question 2"); System.out.println("Which line of code prints out words"); System.out.println("A. Print.String."); System.out.println("B. System.out.println"); System.out.println("C. system.out.println"); System.out.println("D. That's RIDICULUS"); seeker = buffer.readLine(); if(seeker.equalsIgnoreCase("b")) { mark = mark + 1; } percent = mark / 2 ; percent = percent * 100; System.out.println("your score is: " + mark + " out of 2 which is " + percent + "%"); } } Quote: |
Author: | CooKieLord [ Fri Apr 04, 2008 8:24 pm ] |
Post subject: | Re: Making a quiz |
1. It would be awesome if you posted your code in [code] [/code] tags. 2. I would super-impose two arrays. One would be your bank of questions, and the other would be your answer key. |
Author: | Euphoracle [ Sat Apr 05, 2008 8:26 am ] |
Post subject: | RE:Making a quiz |
Doing it the way you are doing it will leave you with 1000+ lines that someone else (this is was Tony was getting at) can do in about ~30 give or take line breaks. If your teacher thinks this is the best way of doing it, then you're going to have a serious problem next year. If you haven't consulted your teacher, do so. Don't be afraid to show your teacher your abilities and ask them for suggestions on how to improve. If you teacher has any capabilities in this subject, he/she should be able to help you change your code from what it is now (repetitive and unnecessary) to efficient and dare I say it, short. |
Author: | Barbarrosa [ Sat Apr 05, 2008 4:32 pm ] |
Post subject: | Re: Making a quiz |
Here are some recommendations, if you have to do this the hard way (you'll end up with < 300 lines, < 100 if you're fairly good, < 50 if you do the easy way well) Assumptions to fill (for the hard way): 1. Is a specific number of possible answers given to all questions? 2. Terminal or GUI App? 3. Quiz loaded from file or embedded in program? A. If from file, how to expect input? Make a file organized as such. B. If embedded, how to create it C. If embedded, whether you need to make a serious quiz, one with varying questions, or just show that you can use java to make one. 4. Is the user always assumed to give valid input? (protecting from bad input could save you a lot of trouble) 5. If GUI, is there a next button, or is it automatically changed when an option is selected? 6. How should the final output be organized (GUI or terminal)? A. Grade: 100%, 98.6%, 14.54% ? B. List Answers to Questions? C. Other Information? Recommended classes to use: Reading in from file: BufferedReader/InputStreamReader Reading from terminal input: Scanner Formatting Numbers: java.text.NumberFormat GUI: Anything in java.awt.* or javax.swing.* (latter contains lightweight components) |
Author: | Qamar [ Tue Apr 08, 2008 8:10 am ] | ||
Post subject: | Re: Making a quiz | ||
hey... so i won't lie.. i don't know what half of those mean... all i know is that i'm going to do it in a terminal window, teacher said he'd give us more marks to get it done in a dialog box but this project is already like 2 weeks past due. could someone help me here ? how do i create a random generator that would make numbers between 0 - 30 and only pick 25 ?
|
Author: | Barbarrosa [ Wed Apr 09, 2008 3:04 am ] | ||
Post subject: | Re: Making a quiz | ||
|
Author: | Nick [ Wed Apr 09, 2008 3:23 am ] |
Post subject: | RE:Making a quiz |
Barbosa, two errors. 1: 30 + 1 = 31 > max questions 2: say it picks 3 twice, that's not very professional |
Author: | Barbarrosa [ Wed Apr 09, 2008 3:38 am ] | ||
Post subject: | Re: Making a quiz | ||
Sorry, woops. Wrong assumptions. This will give you 25 numbers, each between 1 and 30, none equivalent to the next, in an int array.
Quote: Barbosa, two errors. 1: 30 + 1 = 31 > max questions 2: say it picks 3 twice, that's not very professional 1. Random's nextInt(int) method returns an integer between 0 & int-1 2. Fixed here. I wish the arrays in java had a contains(int) method. |
Author: | Qamar [ Wed Apr 09, 2008 8:37 am ] |
Post subject: | Re: Making a quiz |
okay that is sick... but could you tell me how to implement that into my code ?. haha i've spent my whole comp. sci class (75mins) trying to get it to work... but with no success |
Author: | Barbarrosa [ Thu Apr 10, 2008 4:07 pm ] | ||||
Post subject: | Re: Making a quiz | ||||
1. Give more significant names to your variables, even if they are longer These don't make much sense: String seeker; int cntr = 0; int Qcount = 0; What's seeker doing in a quiz program? What's cntr? Why is Qcount capitalized, and why isn't numQuestions or questionCount used? 2. Use for statements like:
3.Use methods to divide up complex tasks:
4. Explore the javadocs online - java has classes and interfaces for lots of things. java.util.Scanner java.text.NumberFormat |
Author: | Qamar [ Tue Apr 15, 2008 8:59 pm ] | ||
Post subject: | Re: Making a quiz | ||
okay cool... so i've explored some different stuff and i decided to put everything into an array... my only problem is i don't know how to set parametors on the random integer and also so that it won't repeat the same quesitons... my code so far is
and yeah. everything is okay except for the random integer selection... i saw the code from before... but i don't understand the rest of it |
Author: | wtd [ Wed Apr 16, 2008 12:44 am ] |
Post subject: | RE:Making a quiz |
Try to use an array of objects rather than parallel arrays. |
Author: | Qamar [ Wed Apr 16, 2008 3:59 pm ] |
Post subject: | Re: Making a quiz |
okay. never mind. my teacher said that it would be a better idea if i could just shuffle the arrays at the beginning of the program so that they don't go in order each time... how would i do that ? and keep the Questions and answers and possible answers the same ? |
Author: | Barbarrosa [ Thu Apr 17, 2008 12:39 am ] |
Post subject: | Re: Making a quiz |
What wtd is probably talking about is making a class for each question, with the corresponding answers given you would create a class, each with the required number of answers, a correct answer (maybe a String or char), and constructor(String ques, String a, String b...), toString() & returnCorrect(String) methods. Then create a method that chooses random questions, much like the one I put together above.This is probably an answer to your problem of randomly ordering them. After you have put together a question class, store the questions in it by instantiating all of them at the beginning of the main method (or in another method that is called at the beginning of the main method) and then randomizing them. Btw, if you're making a gui, you may want to simplify by separating the gui components from the non-gui components. To preserve a more true object-orientation, you could create a constructor for the quiz class and give the frame a pre-made gui with Quiz(frame). Additionally, you will probably need to give your gui a specific layout, add ActionListeners to the choices (& next button, if you have one), and various other things that just come with it. Show me your code after you've worked on it some more. |
Author: | Qamar [ Tue Apr 29, 2008 8:15 am ] | ||
Post subject: | Re: Making a quiz | ||
okay so i finished my assignment. and this is how it went...
|
Author: | Qamar [ Thu Nov 20, 2008 9:11 pm ] |
Post subject: | Re: Making a quiz |
hey i wrote this code a while ago... i thought i'd bring it back up to ask is this code OOP ??. or is it structural ?.. our compsci teacher had to leave for medical reason last year so i had to teach myself this.. and Barbarrosa said he wanted to see this code after... so yeah. |
Author: | Tony [ Thu Nov 20, 2008 9:43 pm ] |
Post subject: | Re: Making a quiz |
Qamar @ Thu Nov 20, 2008 9:11 pm wrote: is this code OOP ??. or is it structural ?
There is only one class and only one method. You get one guess to answer your own question ![]() |
Author: | Qamar [ Thu Nov 20, 2008 9:51 pm ] |
Post subject: | Re: Making a quiz |
i'm going to say.... no, haha last year i had to self teach myself java. how would i make this into object oriented ? |
Author: | Barbarrosa [ Fri Nov 21, 2008 3:01 pm ] | ||
Post subject: | Re: Making a quiz | ||
|
Author: | wtd [ Sat Nov 22, 2008 12:24 am ] | ||
Post subject: | RE:Making a quiz | ||
What's wrong with the following?
|
Author: | Barbarrosa [ Mon Nov 24, 2008 10:16 pm ] |
Post subject: | Re: Making a quiz |
Possibly the use of "right" instead of correct, but I don't see any other substantial reason. If we have a method accepting a number instead of a String, we reduce the work the computer will need to go through when computing whether the answer to the question is correct, depending on the input method. If Qamar had used a non-console GUI (which he did), he may have been able to save the computer a little trouble (putting aside the GUI). Also, an object is intended to save the programmer work - putting the answer in the question works pretty well towards that goal. |
: |