From 6a44b074f0169a1b0f9e92347af929c5e471746e Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Sat, 18 Apr 2015 13:44:44 +0200 Subject: Reorganised projects --- Week5/src/week5/MCQuestion.java | 81 ----------------------------- Week5/src/week5/OpenQuestion.java | 32 ------------ Week5/src/week5/Question.java | 56 -------------------- Week5/src/week5/TCQuestion.java | 40 -------------- Week5/src/week5/Week5.java | 106 -------------------------------------- 5 files changed, 315 deletions(-) delete mode 100644 Week5/src/week5/MCQuestion.java delete mode 100644 Week5/src/week5/OpenQuestion.java delete mode 100644 Week5/src/week5/Question.java delete mode 100644 Week5/src/week5/TCQuestion.java delete mode 100644 Week5/src/week5/Week5.java (limited to 'Week5/src/week5') diff --git a/Week5/src/week5/MCQuestion.java b/Week5/src/week5/MCQuestion.java deleted file mode 100644 index 86869c5..0000000 --- a/Week5/src/week5/MCQuestion.java +++ /dev/null @@ -1,81 +0,0 @@ -package week5; - -import java.util.Random; - -/** - * Class for multiple choice questions - * - * Note: for 2-choice questions the TCQuestion class should be used. - * - * @author Camil Staps, s4498062 - */ -public class MCQuestion extends Question { - - protected final String[] answers; - protected final int correctAnswer; - - /** - * Construct a new instance - * - * @param question the question - * @param answers array of the answer - * @param correctAnswer index for answers pointing to the correct answer - * @param weight weight of the question - */ - public MCQuestion (String question, String[] answers, int correctAnswer, int weight) { - this.question = question; - this.answers = answers; - this.correctAnswer = correctAnswer; - setWeight(weight); - } - - /** See the javadoc on the constructor above */ - public MCQuestion (String question, String[] answers, int correctAnswer) { - this.question = question; - this.answers = answers; - this.correctAnswer = correctAnswer; - } - - @Override - public boolean isCorrect(String answer) { - return correctAnswer == (answer.charAt(0) - 'A'); - } - - @Override - public String juisteAntwoord() { - return answers[correctAnswer]; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(super.toString()); - sb.append("\n"); - int i = 0; - for (String a : answers) { - sb.append((char) ('A' + i++)).append(": ").append(a).append("\n"); - } - sb.deleteCharAt(sb.length() - 1); - return sb.toString(); - } - - /** - * For this type of questions, duplicating randomizes the order of the answers. - * - * @return A new instance of the MCQuestion class with the same parameters, just another order of the answers. - */ - @Override - public Question duplicate() { - Random r = new Random(); - int shift = r.nextInt(answers.length - 1) + 1; - - String[] new_answers = new String[answers.length]; - for (String a : answers) { - new_answers[shift++ % answers.length] = a; - } - - int new_correctAnswer = (correctAnswer + shift) % answers.length; - - return new MCQuestion(question, new_answers, new_correctAnswer, weight); - } - -} diff --git a/Week5/src/week5/OpenQuestion.java b/Week5/src/week5/OpenQuestion.java deleted file mode 100644 index 4f154ea..0000000 --- a/Week5/src/week5/OpenQuestion.java +++ /dev/null @@ -1,32 +0,0 @@ -package week5; - -/** - * Class for open questions - * - * @author Camil Staps, s4498062 - */ -public class OpenQuestion extends Question { - - private final String answer; - - public OpenQuestion(String question, String answer, int weight) { - this.question = question; - this.answer = answer; - setWeight(weight); - } - - public OpenQuestion(String question, String answer) { - this.question = question; - this.answer = answer; - } - - @Override - public boolean isCorrect(String answer) { - return answer.equalsIgnoreCase(this.answer); - } - - @Override - public String juisteAntwoord() { - return answer; - } -} diff --git a/Week5/src/week5/Question.java b/Week5/src/week5/Question.java deleted file mode 100644 index 3b05414..0000000 --- a/Week5/src/week5/Question.java +++ /dev/null @@ -1,56 +0,0 @@ -package week5; - -/** - * Abstract class for quiz questions - * - * @author Camil Staps, s4498062 - */ -public abstract class Question { - - protected String question = ""; - protected int weight = 3; - - @Override - public String toString() { - return question + " (pt: " + weight + ")"; - } - - /** - * Checks if a given answer is correct - * - * @param answer the answer to check - * @return true iff the answer is correct - */ - public abstract boolean isCorrect(String answer); - - /** - * Returns the correct answer - * - * @return the correct answer - */ - public abstract String juisteAntwoord(); - - /** - * Set the weight of this question (succeeds only if 0 < weight < 6) - * - * @param weight the new weight - */ - protected void setWeight(int weight) { - if (weight > 0 && weight < 6) { - this.weight = weight; - } - } - - public int getWeight() { - return weight; - } - - /** - * Create a new instance with the same parameters - * - * @return the new question - */ - public Question duplicate() { - return this; - } -} diff --git a/Week5/src/week5/TCQuestion.java b/Week5/src/week5/TCQuestion.java deleted file mode 100644 index f89240c..0000000 --- a/Week5/src/week5/TCQuestion.java +++ /dev/null @@ -1,40 +0,0 @@ -package week5; - -/** - * Class for 2-choice questions - * - * Note: for 3+-choice questions one can use MCQuestion. - * - * @author Camil Staps, s4498062 - */ -public class TCQuestion extends MCQuestion { - - /** - * Construct a new TCQuestion instance - * - * @param question the question - * @param answer1 the first answer - * @param answer2 the second answer - * @param correctAnswer 0 if answer1 is correct, 1 if answer2 is correct - * @param weight the weight for this question - */ - public TCQuestion (String question, String answer1, String answer2, int correctAnswer, int weight) { - super(question, new String[] {answer1, answer2}, correctAnswer, weight); - } - - /** See the javadoc on the constructor above */ - public TCQuestion (String question, String answer1, String answer2, int correctAnswer) { - super(question, new String[] {answer1, answer2}, correctAnswer); - } - - /** - * For TCQuestions we don't need to randomize the answers. - * - * @return the new question - */ - @Override - public Question duplicate() { - return this; - } - -} diff --git a/Week5/src/week5/Week5.java b/Week5/src/week5/Week5.java deleted file mode 100644 index 24f91b2..0000000 --- a/Week5/src/week5/Week5.java +++ /dev/null @@ -1,106 +0,0 @@ -package week5; - -import java.util.LinkedList; -import java.util.List; -import java.util.Scanner; - -/** - * Uitwerking voor week 5 - * - * @author Camil Staps, s4498062 - */ -public class Week5 { - - private final List questions = new LinkedList(); - private final List questions_2 = new LinkedList(); - - private int score_round1 = 0; - private int score_round2 = 0; - - /** - * @param args the command line arguments - */ - public static void main(String[] args) { - Week5 w5 = new Week5(); - w5.play(); - } - - /** - * Add default questions - */ - public Week5() { - questions.add(new OpenQuestion("Wat is de complexiteit van binair zoeken?", "O(log N)")); - questions.add(new OpenQuestion("Hoe lees je in Java een integer i uit een scanner s?", "i = s.nextInt();", 2)); - questions.add(new OpenQuestion("Is er verschil tussen een interface en een abstracte klasse?", "Ja", 5)); - questions.add(new OpenQuestion("Hoeveel constructoren je minstens maken bij een klasse in Java?", "0", 2)); - questions.add(new OpenQuestion("Is er een maximum aantal constructoren van een klasse in Java?", "Nee")); - - questions.add(new MCQuestion("Wat is de complexiteit van slim in situ sorteren?", new String [] { - "O(N^2)", - "O(N log N)", - "O(N)", - "O(log N)"}, 1, 4)); - questions.add(new MCQuestion("Hoe print je \"Hello world\" op een regel in Java?", new String [] { - "System.out.print(\"Hello world\");", - "System.out.println(\"Hello world\");", - "cout << \"Hello world\";"}, 1)); - questions.add(new MCQuestion("Hoe lees je in Java een niet leeg woord uit scanner s?", new String []{ - "s.nextline()", - "s.next(\"\\S+\")", - "s.next(\"\\a*\")", - "s.next(\"\\S*\")", - "s.next(\"\\\\s+\")", - "s.next(\"\\s+\")", - "s.nextString(\"\\s*\")", - "s.next(\"\\\\S+\")", - "s.nextString()"}, 7, 1)); - - questions.add(new TCQuestion("Deze opgave is eigenlijk niet zo moeilijk.", "Juist", "Onjuist", 0, 5)); - } - - private void play() { - round1(); - System.out.println(); - round2(); - System.out.println(); - - System.out.println("Score ronde 1: " + score_round1); - System.out.println("Score ronde 2: " + score_round2); - } - - private void round1() { - Scanner sc = new Scanner(System.in); - - for (Question q : questions) { - System.out.println(q); - if (q.isCorrect(sc.nextLine())) { - System.out.println("Goed zo!\n"); - score_round1 += q.getWeight(); - } else { - System.out.println("Helaas...\n"); - questions_2.add(q.duplicate()); - } - } - } - - private void round2() { - Scanner sc = new Scanner(System.in); - - if (!questions_2.isEmpty()) { - System.out.println("Je krijgt een herkansing voor de " + questions_2.size() + " vragen die je zojuist fout had.\n"); - - for (Question q : questions_2) { - System.out.println(q); - if (q.isCorrect(sc.nextLine())) { - System.out.println("Goed zo!\n"); - score_round2 += q.getWeight(); - } else { - System.out.println("Helaas... het juiste antwoord was: " + q.juisteAntwoord() + "\n"); - } - } - } else { - System.out.println("Alle vragen goed!"); - } - } - -} -- cgit v1.2.3