I'm really stuck. I am making a quiz, where questions are stored in a binary file. The answers are stored in an array. My problem comes when i have to compare the answer entered by the user to the correct answer. The correct answers are stored in an array. I tried to do a for loop, but its not working. (Infact everything inside the for loop isn't working) Can someone pls help me because i really got stuck and i can't continue programming with such a problem. Thanks a lot. :-)
import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionListener.*;
import java.util.*;
import java.io.*;
import javax.swing.*;
import java.util.Calendar;
import java.awt.image.*;
import javax.imageio.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.DataOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class GQ extends JFrame implements ActionListener {
private static final int FRAME_WIDTH = 1024;
private static final int FRAME_HEIGHT = 768;
private static final int FRAME_X_ORIGIN = 0;
private static final int FRAME_Y_ORIGIN = 0;
AnswerStore answerStore = new AnswerStore();
boolean timeForMore;
public GQ() {
Container contentPane;
contentPane = getContentPane();
JButton button1, button2, button3, button4, button5;
setSize (FRAME_WIDTH, FRAME_HEIGHT);
setTitle("Geography Quiz");
setLocation(FRAME_X_ORIGIN, FRAME_Y_ORIGIN);
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 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);
new GQ();
GQ File = new GQ();
}
String ac = event.getActionCommand();
String[] question = null;
String[] answers = null;
if(ac.equals("b2")) {
question = readFile("rivers.dat");
answers = answerStore.riverAnswers;
} else if (ac.equals("b4")) {
System.exit(0);
}
askQuestions(question, answers);
}
public void stopAndShowResults() {
timeForMore = false; // used for countdown.
}
public String[] readFile(String path) {
StringBuilder sb = new StringBuilder();
String separator = "\n";
String question;
try{
File aFile = new File( "rivers.dat" );
// create an output stream to the file
FileInputStream aFileInStream = new FileInputStream ( aFile );
// create a data output stream to the file output stream
DataInputStream aDataInStream = new DataInputStream ( aFileInStream );
question = aDataInStream.readUTF();
aFileInStream.close();
JOptionPane.showInputDialog(null,question);
}
catch( FileNotFoundException e )
{
System.out.println( e.getMessage() );
System.exit(1);
}
catch(IOException e)
{
System.out.println( e.getMessage() );
System.exit(1);
}
return sb.toString().split("\\n");
}
public void askQuestions(String[] question, String[] answers) {
int count = 0;
int point = 0;
for(int j = 0; j < question.length; j++) { // anything inside in this for loop isn't working.
timeForMore = true;
String input = JOptionPane.showInputDialog(null,question[j]);// shows questions in a dialog box together with input line
JOptionPane.showInputDialog(null,question);
if(answers[j].equals(input))
{
count++; // incrementing counter if entered answer is correct
point++;
}
if(!timeForMore) // if time is over, the program executes the loop an stops asking questions.
break;
}
JOptionPane.showMessageDialog(null, "You answered " + count +
" out of " + question.length +
" questions correctly.");
int percent = (count*100)/question.length;
JOptionPane.showMessageDialog(null, "Your Geography Quiz score is " + percent + " % ");
class AnswerStore { // storing answers of each quiz in arrays
String[] tectonicAnswers = {
"Hellenic", "destructive", "100km", "Italy", "Wegner",
"Mariana", "Sicily", "created", "constructive", "Mediterranean", "ggg",
"ggg", "ggg"
};
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", "",
"", ""
};
}
}