View Single Post
  #4 (permalink)  
Old 12-23-2007, 07:09 AM
hardwired hardwired is online now
Senior Member
 
Join Date: Jul 2007
Posts: 1,144
hardwired is on a distinguished road
An easy way is to store both the questions and answers in a file and read both into arrays at the same time. Then you can pass both arrays to the askQuestions method.
Otherwise, you can try something like this (which has not been compiled/tested - no file data) which answers your question about how to access the answer class data from within GQ.
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; // Instantiate your answer class here so you can access // its fields in this class. AnswerStore answerStore = new AnswerStore(); public static void main (String[] args) { JOptionPane.showMessageDialog(jFrame, "This is a Geography Quiz"); JOptionPane.showMessageDialog(null, "Good Luck"); String passString = JOptionPane.showInputDialog("Enter the Password"); //Password = passString.nextInt(); int Password = Integer.parseInt(passString); if (Password == 123) { JOptionPane.showMessageDialog(null, "Valid. You typed the right password. " + "Now choose from the following menu"); GQ frame = new GQ(); frame.setVisible(true); } else { JOptionPane.showMessageDialog(null, "Invalid Password. Try Again"); } } 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; if (ac.equals("b1")) { questions = readFile("plate_tectonics.txt"); } else if(ac.equals("b2")) { questions = readFile("rivers.txt"); } else if(ac.equals("b3")) { questions = readFile("rocks.txt"); } else if (ac.equals("b4")) { System.exit(0); } askQuestions(questions); } 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.next() + " "); // JOptionPane.showMessageDialog(null,s.next()); } } finally { if (s != null) s.close(); break; } return sb.toString().split("\\s"); } private void askQuestions(String[] questions) { int count = 0; for(int j = 0; j < questions.length; j++) { String input = JOptionPane.showInputDialog(null, questions[j]); // Use reference to AnswerStore instance to access data in it. if(answerStore.answers[j].equals(input)) count++; } JOptionPane.showMessageDialog(null, "You answered " + count + " out of " + questions.length + " questions correctly."); } } class AnswerStore { String[] answer = { "Hellenic", "constructive", "100km", "Italy", "Wegner", "constructive", "100km", "Italy", "destroyed" }; }
Reply With Quote