Java :: Aufgabe #7 :: Lösung #1
7 Lösungen
#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.
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
von Jurom (1070 Punkte)
- 23.10.2012 um 10:05 Uhr
//©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
Seite 1 von 0
1
