Java :: Aufgabe #7 :: Lösung #1

7 Lösungen Lösungen öffentlich
#7

Quiz erstellen (switch-case Anweisung)

Anfänger - Java von Jurom - 22.10.2012 um 13:14 Uhr
Das Programm soll 5 Fragen bereitstellen und die Korrektheit der (Multiple-Choice) Antworten überprüfen.
Benutzen sie zum Entwerfen der Antworten eine switch-case Anweisung.
Die Fragen sollen nacheinander auf dem Bildschirm erscheinen,
bei Falschantwort wird das Quiz vorzeitig beendet.

Beispiele zum Lösungslayout sind beigefügt.
#1
vote_ok
von Jurom (1070 Punkte) - 23.10.2012 um 10:05 Uhr
Quellcode ausblenden Java-Code
//©2012 by Julius J. Hoffmann
//written with Eclipse

import java.util.*;		//Importiert Scanner zum Einlesen der Eingabe


public class Quiz {		//Die "ausführende Klasse"
	
	static boolean Fragen (int nr)		//Methode zu Fragengenerierung
	{
		Scanner s = new Scanner(System.in);				//Anlegen des Scanner-Objektes
		String richtig;									//Deklarieren des Strings richtig
		String antwort;									//Deklarieren des Strings antwort
		switch (nr)										//Beginn der switch-Anweisung mit nr als Fall-Parameter
		{
		case 0 :										//wenn nr = 0
			System.out.println("Wie heißt der 1. schwarze Präsident der USA?");			//System.out.... gibt einen String auf dem Bildschirm aus;
			System.out.println("A) Arnold Schwarzenegger	B) Condoleezza Rice	C) Barack Obama		D) Malcolm X");	//Hier wird im Weitern nicht mehr drauf eingegangen
			richtig = "C";								//Initialisieren des Strings, mit C als richtige Antwort
			antwort = s.next();							//Einlesen der Benutzereingabe
			if (antwort.equals(richtig)) return true;	//Wenn Antwort & Lösung übereinstimmen gibt er den Booleanwert true (wahr) zurück
			return false;								//gibt false (falsch) zurück; wird nur erreicht, wenn if-Anweisung nicht ausgeführt wird
														//da die Methode mit return beendet wird
		case 1 :										
			System.out.println("Was ist Java ebenfalls?");
			System.out.println("A) Eine Insel	B) Ein Fluss	C) Ein Königreich	D) Ein Betriebssystem");
			richtig = "A";								
			antwort = s.next();							
			if (antwort.equals(richtig)) return true; 
			return false;
			
		case 2 :										//wenn nr = 2
			System.out.println("Was ist die Quersumme von 123(ohne Zuhilfenahme von Programmen ;))?");
			System.out.println("A) 24	B) 6	C) 321	D) 15");
			richtig = "B";
			antwort = s.next();							
			if (antwort.equals(richtig)) return true; 
			return false;
			
		case 3 :										//wenn nr = 3
			System.out.println("Welches Betriebssystem basiert grob auf Java?");
			System.out.println("A) Android	B) BIOS	C) OS	D) Win7");
			richtig = "A";
			antwort = s.next();							
			if (antwort.equals(richtig)) return true; 
			return false;
			
		case 4 :										//wenn nr = 4
			System.out.println("Was ist die Antwort auf den Sinn des Leben, das Universum und den ganzen Rest?");
			System.out.println("A) Fortschritt	B) 21	C) Carpe Diem	D) 42");
			richtig = "D";
			antwort = s.next();						
			if (antwort.equals(richtig)) return true; 
			return false;
			
		default : return false;							//Sollte kein switch-Fall eintreten; Dies wird nicht passieren, jedoch fordert Java diese Eventualität ab.
		}	//Ende switch-Anweisung
	}	//Ende Methode
	
	
	public static void main(String[] args) 		//main-Methode
	{
		System.out.println("Quiz");	
		System.out.println("Beantworten Sie die 5 Fragen, um zu gewinnen");
		System.out.println("Geben Sie die Antwort als großen Buchstaben (Bsp.: D )");
		int i = 0;								//Initialisieren der Hilfsvariablen i
		while (i < 5)							//Initiieren der while-Schleife, mit i < 5 als Endwert
		{
			if (Fragen(i)) System.out.println("Richtig!\n");	//Wenn Fragen() true als Wert zurückgibt
			else {	System.out.println("Falsch!\n");			//ansonsten (Frage falsch beantwortet)
					break; }									//Vorzeitiges Beenden der while-Schleife
			i++;												//Hochzählen von i um 1
		}
		if (i == 5) System.out.println("Herzlichen Glückwunsch, Sie haben gewonnen");
		else System.out.println("Sie haben verloren!");			
	}	//Ende main-Methode
}	//Ende Klasse


Normalerweise ist es nötig in der case-Anweisung am Ende ein break; einzufügen,
damit der Compiler das Ende des Anweisungsblock erkennt, und aus der Switch-case Anweisung geht.
Dies ist hier nicht nötig, da bei einer return-Anweisung die Methode bereits vollständig beendet wird.

Da man eine for-Schleife nicht manuell abbrechen kann, wenn bspw. eine Bedingung erfüllt ist,
benutze ich eine while-Schleife, welche mit break; vorzeitig beendet werden kann.
Ansonsten fällt hier auf, das der Aufbau ähnlich ist, i wird initialisiert, es exist. eine Bedingung,
und i wird bei jedem Schleifendurchlauf hochgezählt.

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2118388

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.