Multiple Choice Test Java

Status
Nicht offen für weitere Antworten.
C

chilllord

Gast
Hallo,
ich soll fürs studium mit einem freund einen multiple choice test programmieren

wir habens uns bereits die klassen ausgedacht jedoch fehlt uns ein anfang :(
wir wissen einfach nicht wie und was
also unsere klassen sind folgende

Frage | anzahlAntworten , Antwort [] Antowrt, String text | boolean antworten (?)

Antwort | String loesungText , boolean richtig |

Fragebogen | anzahlFragen , HashSet Fragen (Konstruktor: Fragebogen (Frage[] fragenpool, anzahl ) |

Fragenpool | | main

wir sind um jede hilfe dankbar, haben bis dienstag zeit dafür nur, für dieses projekt

mfg

andre
 

Ralph-Uwe

Bekanntes Mitglied
Fragen, Antwortmöglichkeiten und die richtige Antwort sin immer fest mit einander Verknüpft.
Aus diesem Grund bietet sich eine Klasse Fragen an, die all diese Informationen beinhaltet.

Instanzen der Klasse können in einer HashMap gespeichert werden. Diese lässt sich speichern und man kann
mittels eines Zufallsgenerator eine Frage auswählen.

Das als Vorschlag, jetzt bist Du dran.
 

masta // thomas

Bekanntes Mitglied
Hatte grad nichts zu tun, hier ein simples Beispiel:

Answer.java
Code:
public class Answer {

	private String answerText;
	private boolean answered;
	private boolean correct;
	
	public Answer(String answerText, boolean correct) {
		this.answerText = answerText;
		this.correct = correct;
	}
	
	public String getAnswerText() {
		return answerText;
	}
	public boolean isCorrect() {
		return correct;
	}
	public boolean isAnswered() {
		return answered;
	}

	public void setAnswered(boolean answered) {
		this.answered = answered;
	}
	
}

Question.java
Code:
import java.util.ArrayList;
import java.util.List;


public class Question {

	private List<Answer> answers;
	private String questionText;
	
	public Question()
	{
		answers = new ArrayList<Answer>();
	}
	
	public void addAnswer(Answer a)
	{
		answers.add(a);
	}
	
	public Answer getAnswer(int index)
	{
		return answers.get(index);
	}
	
	public int getAnswerCount()
	{
		return answers.size();
	}
	
	public String getQuestionText() {
		return questionText;
	}

	public void setQuestionText(String questionText) {
		this.questionText = questionText;
	}
}

AnswerException.java
Code:
public class AnswerException extends Exception {

	private static final long serialVersionUID = 1L;
	
	public AnswerException(String s) {
		super(s);
	}

}

MultipleChoiceTest.java
Code:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class MultipleChoiceTest {

	private int position;
	private List<Question> questions;
	
	public MultipleChoiceTest()
	{
		position = 0;
		questions = new ArrayList<Question>();
		generateSomeQuestions();
	}
	
	public boolean hasNextQuestion()
	{
		return position < questions.size();
	}
	
	public Question getNextQuestion()
	{
		if(!hasNextQuestion())
			return null;
		
		return questions.get(position++);
	}
	
	private Question getCurrentQuestion()
	{
		if(position <= 0)
			return questions.get(position);
		return questions.get(position - 1);
	}
	
	public boolean makeAnswer(String answer) throws AnswerException
	{
		boolean answered = false;
		Answer currentAnswer = null;
		for(String s : answer.split(","))
		{
			try
			{
				currentAnswer = getCurrentQuestion().getAnswer(Integer.valueOf(s.trim())-1);
				currentAnswer.setAnswered(true);
				answered = currentAnswer.isCorrect();
			} catch(NumberFormatException e) {
				throw new AnswerException("Falsche Eingabe.");
			} catch(IndexOutOfBoundsException ie) {
				throw new AnswerException("Diese Antwortmöglichkeit existiert nicht.");
			}
		}
		return answered;
	}
	
	public void startTest()
	{
		Scanner scanner = new Scanner(System.in);
		Question q;
		String answerInput;
		boolean answerCorrect = false;
		boolean inputOk = false;
		int rightAnswers = 0;
		int wrongAnswers = 0;
		
		while(hasNextQuestion())
		{
			q = getNextQuestion();
			System.out.println(q.getQuestionText());
			for(int i = 0; i < q.getAnswerCount(); i++)
				System.out.println("Antwort " + (i+1) + ": " + q.getAnswer(i).getAnswerText());
			System.out.println("Es können auch mehrere Antworten richtig sein. Bitte mit , trennen.");
			System.out.print("Deine Antwort: ");
			
			do
			{
				answerInput = scanner.next();
				try {
					answerCorrect = makeAnswer(answerInput);
					inputOk = true;
				} catch (AnswerException e) {
					System.out.println(e.getMessage());
					inputOk = false;
				}
			} while(!inputOk);
			
			if(answerCorrect)
			{
				System.out.println("Richtig!");
				rightAnswers++;
			}
			else
			{
				System.out.println("Falsch");
				wrongAnswers++;
			}
			System.out.println();
		}
		System.out.println("Testergebnis - von " + (rightAnswers + wrongAnswers) + " Fragen hast du " + rightAnswers + " richtig beantwortet!");
		
	}
	
	public static void main(String[] args) {
		new MultipleChoiceTest().startTest();
	}
	
	private void generateSomeQuestions()
	{
		Question q = new Question();
		q.setQuestionText("Wieviel ist 1+2?");
		q.addAnswer(new Answer("6", false));
		q.addAnswer(new Answer("4", false));
		q.addAnswer(new Answer("3", true));
		questions.add(q);
		
		q = new Question();
		q.setQuestionText("Wie lautet mein Name?");
		q.addAnswer(new Answer("MultipleChoiceText", false));
		q.addAnswer(new Answer("MultipleChoiceTest", true));
		q.addAnswer(new Answer("ich habe keine Namen", false));
		questions.add(q);
		
		q = new Question();
		q.setQuestionText("Was davon ist grün?");
		q.addAnswer(new Answer("Gras", true));
		q.addAnswer(new Answer("Kunstrasen", true));
		q.addAnswer(new Answer("Füße", false));
		questions.add(q);
	}
	
}

Ist bisschen lazy dahingeschrieben, aber so in der Richtung könntest du es aufbauen.
 
G

Guest

Gast
vielen dank für die beiden antworten !!! also weiss gar nicht wie ich richtig danke sagen könnte...es geht zum teil um leben und tod ;) programmiernote :) und ich hing total...weil ich nicht so der erfahrene java typ bin

bischen lazy dahin geschrieben sieht nämlich sehr gut aus. wünschte ich hätte es so einfach geschafft :) ich werde mich heute abend mal mit nem uni kollegen hinsetzen und die sachen auswerten. samstag ole ;) werde morgen dann bericht erstatten :)

vielen dank nochmals! der fragenpool hat uns zur weissglut getrieben bisher...

ich kopiere hier nochmal einen teil unsere projektaufgabe für vielleicht aufkommende fragen vorweg :)

mfg andre

Projekt:
Zur Ermittlung des Leistungsstandes in einem Informatikkurs soll ein Prüfungssystem
programmiert werden.
Hierzu sollen Multiple-Choice-Fragen als Objekte einer eigenen Klasse angelegt werden.
Diese Fragen verfügen über einen Fragenteil als geschützten Text, eine Anzahl an möglichen
Lösungen, einem Speicherfeld für die richtige Lösung und natürlich einer Punktzahl.
Außerdem verfügen die Objekte über eine Auswertemethode die in einem boolschen
Rückgabewert die korrekte Beantwortung der Frage darstellt.
In einer Applikation sollen nun eine beliebige (große) Anzahl an Fragen gespeichert werden
können und bei Bedarf mit einem Zufallsgenerator zu einer Prüfung mit genau zehn Fragen
zusammengestellt werden.
 
G

Guest

Gast
wie macht´man es die klasse fragebogen sich die fragen aus der klasse fragenpool holt, insgesamt 10 zufällige von 20 fragen und die wieder gibt

hilfe :(
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
x22 Java Multiple Choice Test Java Basics - Anfänger-Themen 8
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
E multiple Timer die sich nicht summieren Java Basics - Anfänger-Themen 12
JD_1998 Multiple Parametereingabe Java Basics - Anfänger-Themen 3
D [AES] input not multiple of 16 Java Basics - Anfänger-Themen 2
K RegEx - Multiple Line Java Basics - Anfänger-Themen 3
F Multiple Generics Java Basics - Anfänger-Themen 10
G Multiple Clients and one Server Java Basics - Anfänger-Themen 2
Dogge Multiple markers at line 15 Java Basics - Anfänger-Themen 13
U [Problem] Handling multiple frames Java Basics - Anfänger-Themen 5
P Threads Multiple Dialogboxen Java Basics - Anfänger-Themen 6
G Multiple Leerzeichen entfernen Java Basics - Anfänger-Themen 13
J String zu Double parsen (multiple points) Java Basics - Anfänger-Themen 2
H Multiple Markers at this line Java Basics - Anfänger-Themen 3
S Threads Handling multiple different Threads Java Basics - Anfänger-Themen 7
H Multiple Fileaccess - sync? Java Basics - Anfänger-Themen 7
H Multiple JFrames im GUI Editor von NetBeans Java Basics - Anfänger-Themen 2
S jList Multiple Selection mit Klick Java Basics - Anfänger-Themen 2
T Multiple BufferedImage Java Basics - Anfänger-Themen 3
J beenden durch choice Java Basics - Anfänger-Themen 11
N Java awt Choice funktioniert nicht Java Basics - Anfänger-Themen 2
E Darstellung der Choice Einträge Java Basics - Anfänger-Themen 4
I Choice expandieren Java Basics - Anfänger-Themen 6
T Casten von Choice auf Vector oder Object[] Java Basics - Anfänger-Themen 14
G Alle Dateinamen in ein Choice ausgeben Java Basics - Anfänger-Themen 2
W Choice+Button Problem! Java Basics - Anfänger-Themen 5
B Choice läuft Amok Java Basics - Anfänger-Themen 10
B Array von Choice wird nicht von getSelectedItem erkannt Java Basics - Anfänger-Themen 3
B Problem mit Einfügen von Choice (in ein Applet) aus Paint Java Basics - Anfänger-Themen 13
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
W junit.Test not accessible? Java Basics - Anfänger-Themen 4
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
D Hilfe bei Calculator Test Java Basics - Anfänger-Themen 15
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
M Test auf Exceptions schreiben Java Basics - Anfänger-Themen 11
P Eclipse Karate Framework API Test . Unexpected Error: the trustAnchors parameter must be non-empty Java Basics - Anfänger-Themen 1
I Variable innerhalb Methode: Local variable test defined in an enclosing scope must be final or effectively final Java Basics - Anfänger-Themen 3
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
A Test Junit Java Basics - Anfänger-Themen 1
H Junit test Java Basics - Anfänger-Themen 12
P JUnitTest Best Practise (Ein Assert pro Test?) Java Basics - Anfänger-Themen 10
P Methoden JUnit 4 - Test Java Basics - Anfänger-Themen 6
Mr_Kleeblatt Operatoren if (arri[i] != "test.java"&& arri[i] != "test.class") Java Basics - Anfänger-Themen 3
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
L Test-Methoden schreiben Java Basics - Anfänger-Themen 13
D Test auf Dopplungen Java Basics - Anfänger-Themen 32
neerual Klassen Wie rufe ich Klassen, die andere Klassen extenden in einer Test Unit auf? Java Basics - Anfänger-Themen 10
B JUnit Test erstellen Java Basics - Anfänger-Themen 6
B zzz.test Java Basics - Anfänger-Themen 13
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
C Erste Schritte Hexidezimal-Test Java Basics - Anfänger-Themen 2
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
B Palindrom Test mit Junit Java Basics - Anfänger-Themen 23
T Minesweeper Test Java Basics - Anfänger-Themen 2
S Junit Test Java Basics - Anfänger-Themen 2
F Test Java Basics - Anfänger-Themen 12
W Ist das ein legitimer Test? Java Basics - Anfänger-Themen 5
shiroX Methoden JUnit-Test einer void-Methode Java Basics - Anfänger-Themen 4
U Best Practice Datenbereitstellung Unit Test Java Basics - Anfänger-Themen 6
B Binäre Suche - Junit Test Java Basics - Anfänger-Themen 6
B Datentypen Test float und double speichern Zahlen nur ungefähr Java Basics - Anfänger-Themen 4
Z Vererbung Test auf Normalverteilung, Wilcoxon Java Basics - Anfänger-Themen 3
M Assertion NotNull Test Java Basics - Anfänger-Themen 3
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
W Test, ob Datei existiert, schlägt fehl Java Basics - Anfänger-Themen 4
T JUnit test failed Java Basics - Anfänger-Themen 3
H Array Test Methode schreiben Java Basics - Anfänger-Themen 3
R JUnit Test mit einer Dateistruktur als Testparameter Java Basics - Anfänger-Themen 3
V Bruchrechner Test Java Basics - Anfänger-Themen 7
T Test läuft schief Java Basics - Anfänger-Themen 3
shiroX OOP Array kleinste Zahl mit jUnit test Java Basics - Anfänger-Themen 3
G mache aus Test nach sortieren estt oder java aajv Java Basics - Anfänger-Themen 5
S Code stimmt nicht für vorgegebenen JUnit-Test Java Basics - Anfänger-Themen 2
R JUnit Test mit mehrfach ausgeführt Java Basics - Anfänger-Themen 6
B JUnit - Mini-Test Java Basics - Anfänger-Themen 9
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
N Test mit assert Java Basics - Anfänger-Themen 9
Y Junit Test - Testwert ändert sich Java Basics - Anfänger-Themen 12
K Palindrom Test Java Basics - Anfänger-Themen 9
S Performance-/Stress Test für Webanwendung Java Basics - Anfänger-Themen 2
V Mediaplayer - NullPointerException bei Unit-Test Java Basics - Anfänger-Themen 4
H Ich kann mein Java Programm Test.class nicht ausführen Java Basics - Anfänger-Themen 6
H Javabefehl Test Java Basics - Anfänger-Themen 3
S Hilfe zu Java-Programm und JUnit Test!! Java Basics - Anfänger-Themen 5
T JUNit Test IOException Java Basics - Anfänger-Themen 5
H lucas-test Java Basics - Anfänger-Themen 14
P White-Box-Test Verständnisproblem Java Basics - Anfänger-Themen 11
N Methoden Test ob Server vorhanden ist Java Basics - Anfänger-Themen 4
N Test Datei = Bild Java Basics - Anfänger-Themen 5
S Erste Schritte 1. Test Programm Java Basics - Anfänger-Themen 21
Spin JUNIT Test Case - Problem bei testen Java Basics - Anfänger-Themen 2
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
timbeau JUnit Test Dauer speichern/loggen Java Basics - Anfänger-Themen 16
E Am Mittwoch Test und ich checks überhaupt nich Java Basics - Anfänger-Themen 27
A junit test wann verwendet man "was"? Java Basics - Anfänger-Themen 4
J JUnit Test Java Basics - Anfänger-Themen 2
D Test einer Chipkarte Java Basics - Anfänger-Themen 2
J Problem mit Test-Klasse Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben