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