Random r = new Random();
Vector v = new Vector();
out.println("<HTML><HEAD>");
out.println("<TITLE>" + model.crsNum + " " + model.examName + " " + model.examVers + " " + model.crsName + "</TITLE>");
out.println("</HEAD>");
out.println("<BODY>");
out.println("<H1>" + model.crsNum + " " + model.examName + " " + model.examVers + " " + model.crsName + "</H1>");
out.println("<UL>"); // START OF PASS 1 - LIST
for (int i=0; i<model.getNumQuestions(); i++) {
Q q = model.getQuestion(i);
if (q.getQText() == null || q.getQText().length() == 0)
continue;
out.println("<LI><A NAME=Q" + (i+1) + ">" + (i+1) + ". " + q.getQText() + "</A>");
out.println("<UL>"); // start of one question
for (int j=0; j<q.getCount(); j++) {
char c = (char)('A"+j);
out.println("<LI><A HREF=#Q"+(i+1)+"_"+c +">" + c + ". " + q.getAnsText(j) + "</A>");
v.addElement(new link(i+1, r.nextInt(), q, j));
}
out.println("</UL>"); // end of one question
}
out.println("</UL>"); // END OF PASS ONE
// Depends upon JDK 1.2
// Collections.sort(v, new Comparator() {
// public int compare(Object o1, Object o2) {
// link l1 = (link) o1;
// link l2 = (link) o2;
// if (l1.r < l2.r)
// return -1;
// else if (l1.r > l2.r)
// return 1;
// else
// return 0;
// }
// });
// PASS TWO: Print the answers; use a DL (DT and DD) for formatting
out.println("<HR>");
out.println("<H1>Answers - no peeking!</H1>");
out.println("<P>The following are the answers. No peeking by reading sequentially");
out.println("<HR>");
out.println("<DL>"); // START PASS 2 - LIST
for (int i=0; i<v.size(); i++) {
link l = (link)v.elementAt(i);
out.print("<DT><A NAME=Q"+l.qn+"_"+(char)('A"+l.a)+">"+l.q.getAnsText(l.a)+ "</A>");
out.print("<DD>");
out.print("<BR><BR><BR><BR><BR>");
if (l.q.getAns() == l.a) {
out.print("CORRECT!. <A HREF=#Q" + (l.qn+1) + ">Next question</A>");
} else {
out.print("Sorry, that's not the answer we expected here.<A HREF=#Q" + l.qn + ">Try again</A>");
}
out.println("<BR><BR><BR><BR><BR>");
}
out.println("</DL>");
out.println("<H1><A NAME=Q" + (v.size()+1) + ">That's all folks!</A></H1>");
out.println("You've done all the questions.</A>");
out.println("<HR>");
out.println("<A HREF=\"#top\">Back to top of page</A>");
// print blank lines so # links near end work OK
for (int i=0; i<10; i++) {
out.println("<BR>");
}
out.println("</BODY>");
out.println("</HTML>");