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