Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Java (http://www.go4expert.com/forums/java/)
-   -   quiz problem. (http://www.go4expert.com/forums/quiz-problem-t8033/)

saytri 29Dec2007 22:10

quiz problem.
 
I am making a quiz where one can choose from 3 different titles: either plate tectonics, rivers or rocks. I typed the questions in a textfile and i stored the answers in an array. My problem is that i wish to display the questions randomly, and not always in the same format. What can i do? Thanks a lot for the help. I appreciate it a lot! :)

This is the code i have written:

Code:

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import javax.swing.*;
 
public class GQ extends JFrame implements ActionListener {
    private static final int FRAME_WIDTH = 140;
    private static final int FRAME_HEIGHT = 160;
    private static final int FRAME_X_ORIGIN = 70;
    private static final int FRAME_Y_ORIGIN = 50;
    AnswerStore answerStore = new AnswerStore();
 
   
    public static void main (String[] args) {
       
       
     

        JOptionPane.showMessageDialog(null, "This is a Geography Quiz");
        JOptionPane.showMessageDialog(null, "Good Luck");
 
       
 
            GQ frame = new GQ();
            frame.setVisible(true);
     
    }
 
    public GQ() {
        Container contentPane;
        JButton button1, button2, button3, button4, button5;
 
        setSize (FRAME_WIDTH, FRAME_HEIGHT);
        setTitle("Geography Quiz");
        setLocation(FRAME_X_ORIGIN, FRAME_Y_ORIGIN);
 
        contentPane = getContentPane();
        contentPane.setBackground(Color.pink);
        contentPane.setLayout(new FlowLayout());
 
        button1 = new JButton("Plate Tectonics");
        button2 = new JButton("Rivers");
        button3 = new JButton("Rocks");
        button4 = new JButton("Quit");
 
        contentPane.add(button1);
        contentPane.add(button2);
        contentPane.add(button3);
        contentPane.add(button4);
   
        button1.addActionListener(this);
        button1.setActionCommand("b1");
        button2.addActionListener(this);
        button2.setActionCommand("b2");
        button3.addActionListener(this);
        button3.setActionCommand("b3");
        button4.addActionListener(this);
        button4.setActionCommand("b4");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
 
    public void actionPerformed(ActionEvent e) {
        String ac = e.getActionCommand();
        String[] questions = null;
        String[] answers = null;
        if (ac.equals("b1")) {
            questions = readFile("plate_tectonics.txt");
           
            answers = answerStore.tectonicAnswers;
        } else if(ac.equals("b2")) {
            questions = readFile("rivers.txt");
            answers = answerStore.riverAnswers;
        } else if(ac.equals("b3")) {
            questions = readFile("rocks.txt");
            answers = answerStore.rockAnswers;
        } else if (ac.equals("b4")) {
            System.exit(0);
        }
        askQuestions(questions, answers);
    }
     
   
   
   
 
    private String[] readFile(String path) {
        Scanner s = null;
        StringBuilder sb = new StringBuilder();
        String separator = "\n";
        try {
            s = new Scanner(new BufferedReader(new FileReader(path)));
//            s.useDelimiter(",\\s*");
            while (s.hasNext()) {
                sb.append(s.nextLine() + separator);
//                JOptionPane.showMessageDialog(null,s.next());
            }
        } catch(IOException e) {
            System.out.println("read error: " + e.getMessage());
        } finally {
            if (s != null)
                s.close();
//            break;
        }
     
     
    }
 
    private void askQuestions(String[] questions, String[] answers) {
       
        System.out.printf("questions = %s%nanswers = %s%n",
                          Arrays.toString(questions),
                          Arrays.toString(answers));
        int count = 0;
        int point = 0;
        for(int j = 0; j < questions.length; j++) {
            String input = JOptionPane.showInputDialog(null, questions[j]);
            if(answers[j].equals(input))
              {
                count++;
                point++;
            } 
            }
            JOptionPane.showMessageDialog(null, "You answered " + count +
                                      " out of " + questions.length +
                                      " questions correctly.");
            JOptionPane.showMessageDialog(null, "Your Geography Quiz score is " + ((point*100)/10) + " % ");
       
          if(point>=0 && point<=3)
          {
           
              JOptionPane.showMessageDialog(null, "You need to Improve");
          }
         
         
        if(point>=4 && point<=7)
          {
           
              JOptionPane.showMessageDialog(null, "Good");
          }
         
          if(point>=8 && point<=10)
          {
           
              JOptionPane.showMessageDialog(null, "You did Great");
          }
                                   
      }
    }
 
class AnswerStore  {
    String[] tectonicAnswers = {
        "Hellenic", "destructive", "100km", "Italy", "Wegner",
        "Mariana", "Sicily", "created", "constructive", "Mediterranean"
    };
   
    String[] riverAnswers = {
        "Gorges", "Meanders", "Levees", "Yes", "Less Economic Developed Countries",
        "crescent shaped lakes", "More Economic Developed Countries", "No", "River Discharge", "No"
    };
   
    String[] rockAnswers = {
        "40km", "Igneous Rock", "Sedimentary", "Basalt", "Organic",
        "pressure", "Oolites", "Igneous", "dark black", "basalt"
    };

 

}

Thanks again! :)

technosavvy 3Jan2008 15:10

Re: quiz problem.
 
i don't know java but i think it is a logical question ..could u just post the fomat of your question files..
i believe a solution can be found after that.


All times are GMT +5.5. The time now is 22:41.