Java :: Aufgabe #7
7 Lösungen

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.
Lösungen:

//©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.

import java.util.Scanner; public class Quiz { static Scanner sc; static int zustand = 0; public static void main(String[] args) { sc = new Scanner(System.in); test(); } public static void test() { System.out.println("Bitte gib die Nummer der richtigen Antwort ein."); switch(zustand) { case 0: System.out.println("Frage 1: \n" + "Ist Java oop? \n" + "1. JA \n" + "2. NEIN"); if(sc.nextInt() == 1) { zustand++; test(); } else { System.out.println("Schade, das war die falsche Antwort."); } break; case 1: System.out.println("Frage 2: \n" + "Welche Klasse liest die Eingabewerte aus? \n" + "1. Random \n" + "2. Scanner \n" + "3. Reader"); if(sc.nextInt() == 2) { zustand++; test(); } else { System.out.println("Schade, das war die falsche Antwort."); } break; case 2: System.out.println("Frage 3: \n" + "Welcher TRAINyourprogrammer-User hat diese Aufgabe hochgeladen? \n" + "1. Gustl \n" + "2. incocnito \n" + "3. Jurom"); if(sc.nextInt() == 3) { zustand++; test(); } else { System.out.println("Schade, das war die falsche Antwort."); } break; case 3: System.out.println("Frage 4: \n" + "Wer hat diese Loesung geschrieben? \n" + "1. Ich \n" + "2. 23Java \n" + "3. Ach, die war schon immer da"); if(sc.nextInt() == 2) { zustand++; test(); } else { System.out.println("Schade, das war die falsche Antwort."); } break; case 4: System.out.println("Frage 5: \n" + "Fast geschafft, was war den nun Frage 1 schnell wieder? \n" + "1. Ist Java oop? \n" + "2. Ist Java ein Kaffee? \n" + "3. Ist Java schwer zu lernen?"); if(sc.nextInt() == 1) { System.out.println("Gratulation, du hast es geschafft."); } else { System.out.println("Schade, das war die falsche Antwort."); } } } }
Eine etwas lange Lösung, gibt sicherlich einfachere Lösungen!
Java-Code

import java.io.*; public class Quiz{ public static void main(String[] arg){ System.out.println("Willkommen beim Quiz"); try{ System.out.println("Frage 1:"); // Einlesen des Inputs InputStreamReader isr1 = new InputStreamReader(System.in); BufferedReader br1 = new BufferedReader(isr1); System.out.println("Welches Jahr schreiben wir? \n 1) 1997 \t \t 2) 2004\n 3) 2012 \t \t 4) 2013\n"); String eingabe1 = br1.readLine(); // Übergabe des Inputs an die Variable antwort1 int antwort1 = Integer.parseInt(eingabe1); // Auswertung der Eingabe switch(antwort1){ case 1: System.out.println("Falsch!\n Tip: etwas später ;) \n Spiel beendet"); return; case 2: System.out.println("Nah dran!\n Trotzdem zu früh!\n Spiel beendet"); return ; case 3: System.out.println("Richtig!"); break; case 4: System.out.println("Falsch!\nWir haben den Weltuntergang noch nicht überlebt!"); return; // Wenn Antwort nicht 1,2,3 oder 4 ist, Fehlermeldung ausgeben default: System.out.println("Ungültige Eingabe!"); return; } } // Wenn die Nummer zu groß ist catch (IOException e) {System.out.println("Ungültige Nummer!"); return;} // Wenn Inout keine Nummer ist catch (NumberFormatException e){ System.out.println("Eingegebenes Zeichen ist keine gültige Nummer!"); return;} // 2. Frage: Genau das selber wie vorher try{ System.out.println("Frage 2:"); InputStreamReader isr1 = new InputStreamReader(System.in); BufferedReader br1 = new BufferedReader(isr1); System.out.println("Wer hat den weltuntergang vorhergesagt?\n 1) Inka \t \t 2) Maya\n 3) Chinesen \t \t 4) Inuits\n"); String eingabe1 = br1.readLine(); int antwort1 = Integer.parseInt(eingabe1); switch(antwort1){ case 1: System.out.println("Falsch!\n Spiel beendet"); return; case 3: System.out.println("Falsch!\nSpiel beendet"); return ; case 2: System.out.println("Richtig!"); break; case 4: System.out.println("Falsch!\nSpiel beendet!"); return; default: System.out.println("Ungültige Eingabe!"); return; } } catch (IOException e) {System.out.println("Ungültige Nummer!"); return;} catch (NumberFormatException e){ System.out.println("Eingegebenes Zeichen ist keine gültige Nummer!"); return;} // 3. Frage: Genau das selber wie vorher try{ System.out.println("\n\t\t Frage 3:"); InputStreamReader isr1 = new InputStreamReader(System.in); BufferedReader br1 = new BufferedReader(isr1); System.out.println("Welche Programmiersprache wird hier behandelt?\n1) Perl\t \t 2)JavaScript\n3) C++ \t \t4) Java"); String eingabe1 = br1.readLine(); int antwort1 = Integer.parseInt(eingabe1); switch(antwort1){ case 1: case 2: case 3: System.out.println("Falsch!\nSpiel beendet"); return ; case 4: System.out.println("Falsch! \nNein; natürlich Richtig ;)"); break; default: System.out.println("Ungültige Eingabe!"); return; } } catch (IOException e) {System.out.println("Ungültige Nummer!"); return;} catch (NumberFormatException e){ System.out.println("Eingegebenes Zeichen ist keine gültige Nummer!"); return;} // Und nochmal: Frage 4 try{ System.out.println("\n\t\t Frage 3:"); InputStreamReader isr1 = new InputStreamReader(System.in); BufferedReader br1 = new BufferedReader(isr1); System.out.println("Wie heißt es richtig?\n1) Benjamin Blömchen\t \t 2)Benjamin Beerchen\n3) Benjamin Blümchen \t \t4) Benjamin Bierchen"); // sorry; solangsam fehlen mir die Ideen... String eingabe1 = br1.readLine(); int antwort1 = Integer.parseInt(eingabe1); switch(antwort1){ case 1: case 2: System.out.println("Falsch!\nSpiel beendet"); return ; case 3: System.out.println("Richtig ;)"); break; case 4: System.out.println("Ich wusste, dass du das sagen würdest :D Trotzdem:\n\t\t F A L S C H !"); return; default: System.out.println("Ungültige Eingabe!"); return; } } catch (IOException e) {System.out.println("Ungültige Nummer!"); return;} catch (NumberFormatException e){ System.out.println("Eingegebenes Zeichen ist keine gültige Nummer!"); return;} // Ein letzes Mal: try{ System.out.println("\n\t\t Frage 3:"); InputStreamReader isr1 = new InputStreamReader(System.in); BufferedReader br1 = new BufferedReader(isr1); System.out.println("Java ist...\n1) Objektorientiert\t \t 2)Unobjektorientiert\n3) Objektunorientiert \t \t4) Eine Insel"); String eingabe1 = br1.readLine(); int antwort1 = Integer.parseInt(eingabe1); switch(antwort1){ case 1: System.out.println("Glückwunsch! Alle Fragen richtig beantwortet!\n"); return; case 2: case 3: case 4: System.out.println("Falsch!\nSpiel beendet"); return ; default: System.out.println("Ungültige Eingabe!"); return; } } catch (IOException e) {System.out.println("Ungültige Nummer!"); return;} catch (NumberFormatException e){ System.out.println("Eingegebenes Zeichen ist keine gültige Nummer!"); return;} }}

/* @Author H.K. * @Date 22.02.2016 * * Programmbeschreibung: * Quiz mit Switch-Case Anweisung */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class mainprogram { public static void main ( String args[] ) throws IOException { System.out.println("Frage 1: Wie heißt die Hauptstadt von Irland?"); System.out.println("A: Dublin B: Berlin C: Wien D: London\n"); String answer = ""; answer = getanswer(answer); String rightanswer = "A"; rightanswer(answer, rightanswer); System.out.println("Frage 2: Welcher Fluss fließt durch Salzburg?"); System.out.println("A: Inn B: Donau C: Drau D: Salzach\n"); answer = ""; answer = getanswer(answer); rightanswer = "D"; rightanswer(answer, rightanswer); } public static String getanswer(String answer) throws IOException { while (answer == "") { System.out.println( "Deine Antwort: " ); BufferedReader input = new BufferedReader ( new InputStreamReader ( System.in ) ); String inputString = input.readLine(); answer = inputString; if (answer.equals("A") || answer.equals("B") || answer.equals("C") || answer.equals("D")) { } else { System.out.println("Keine gültige Eingabe erkannt!"); answer = ""; } } return answer; } public static String rightanswer(String answer, String rightanswer) { switch(answer) { case "A" : if (answer.equals(rightanswer)) { System.out.println("Die Antwort ist richtig!\n"); answer = "Die Antwort ist richtig!\n"; break; } case "B" : if (answer.equals(rightanswer)) { System.out.println("Die Antwort ist richtig!\n"); break; } case "C" : if (answer.equals(rightanswer)) { System.out.println("Die Antwort ist richtig!\n"); break; } case "D" : if (answer.equals(rightanswer)) { System.out.println("Die Antwort ist richtig!"); break; } default : System.out.println("Die Antwort ist falsch!"); System.exit(0); } return answer; } }
Ausgabe:
Konsolenausgabe:
Frage 1: Wie heißt die Hauptstadt von Irland?
A: Dublin B: Berlin C: Wien D: London
Deine Antwort:
A
Die Antwort ist richtig!
Frage 2: Welcher Fluss fließt durch Salzburg?
A: Inn B: Donau C: Drau D: Salzach
Deine Antwort:
D
Die Antwort ist richtig!
War leider zu faul um mir eigene Fragen auszudenken :D
Java-Code

// trainyourprogrammer // Aufgabe 7 import java.io.*; public class Fragespiel { public static void main(String[] args) throws Exception { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader buf = new BufferedReader(isr); String antwortFrage1; String antwortFrage2; String antwortFrage3; String antwortFrage4; String antwortFrage5; System.out.println(""); System.out.println("Quiz"); System.out.println(""); System.out.println("Beantworten Sie die 5 Fragen um zu gewinnen."); System.out.println("Geben Sie die Antwort als Großbuchstaben ein (Bsp.: D )."); System.out.println(""); System.out.println("Frage 1:"); System.out.println(""); System.out.println("Wie heißt der erste schwarze Präsident der USA?"); System.out.println(""); System.out.println("A) Arnold Schwarzenegger"); System.out.println("B) Condoleezza Rice"); System.out.println("C) Barack Obama"); System.out.println("D) Malcolm X"); System.out.println(""); antwortFrage1 = buf.readLine(); System.out.println(""); switch(antwortFrage1) { case "A" : System.out.println("Antwort A ist Falsch! Die richtige Antwort lautet C, Sie haben verloren!"); System.exit(0); case "B" : System.out.println("Antwort B ist Falsch! Die richtige Antwort lautet C, Sie haben verloren!"); System.exit(0); case "D" : System.out.println("Antwort D ist Falsch! Die richtige Antwort lautet C, Sie haben verloren!"); System.exit(0); case "C" : System.out.println("Antwort C ist richtig! Weiter zu Frage 2!"); break; } System.out.println(""); System.out.println("Frage 2:"); System.out.println(""); System.out.println("Was ist Java ebenfalls?"); System.out.println(""); System.out.println("A) Eine Insel"); System.out.println("B) Ein Fluss "); System.out.println("C) Ein Königreich"); System.out.println("D) Ein Betriebssystem"); System.out.println(""); antwortFrage2 = buf.readLine(); System.out.println(""); switch(antwortFrage2) { case "A" : System.out.println("Antwort A ist richtig! Weiter zu Frage 3!"); break; case "B" : System.out.println("Antwort B ist Falsch! Die richtige Antwort lautet A, Sie haben verloren!"); System.exit(0); case "D" : System.out.println("Antwort D ist Falsch! Die richtige Antwort lautet A, Sie haben verloren!"); System.exit(0); case "C" : System.out.println("Antwort C ist Falsch! Die richtige Antwort lautet A, Sie haben verloren!"); System.exit(0); } System.out.println(""); System.out.println("Frage 3:"); System.out.println(""); System.out.println("Was ist die Quersumme von 123(Ohne Zuhilfenahme von Programmen ;))"); System.out.println(""); System.out.println("A) 24"); System.out.println("B) 6"); System.out.println("C) 321"); System.out.println("D) 15"); System.out.println(""); antwortFrage3 = buf.readLine(); System.out.println(""); switch(antwortFrage3) { case "A" : System.out.println("Antwort A ist Falsch! Die richtige Antwort lautet B, Sie haben verloren!"); System.exit(0); case "B" : System.out.println("Antwort B ist richtig! Weiter zu Frage 4!"); break; case "D" : System.out.println("Antwort D ist Falsch! Die richtige Antwort lautet B, Sie haben verloren!"); System.exit(0); case "C" : System.out.println("Antwort C ist Falsch! Die richtige Antwort lautet B, Sie haben verloren!"); System.exit(0); } System.out.println(""); System.out.println("Frage 4:"); System.out.println(""); System.out.println("Welches Betriebssystem basiert grob auf Java?"); System.out.println(""); System.out.println("A) Android"); System.out.println("B) BIOS"); System.out.println("C) OS"); System.out.println("D) Win7"); System.out.println(""); antwortFrage4 = buf.readLine(); System.out.println(""); switch(antwortFrage4) { case "A" : System.out.println("Antwort A ist richtig! Weiter zu Frage 5!"); break; case "B" : System.out.println("Antwort B ist Falsch! Die richtige Antwort lautet A, Sie haben verloren!"); System.exit(0); case "D" : System.out.println("Antwort D ist Falsch! Die richtige Antwort lautet A, Sie haben verloren!"); System.exit(0); case "C" : System.out.println("Antwort C ist Falsch! Die richtige Antwort lautet A, Sie haben verloren!"); System.exit(0); } System.out.println(""); System.out.println("Frage 5:"); System.out.println(""); System.out.println("Was ist die Antwort auf den Sinn des Lebens, das Universum und den ganzen Rest?"); System.out.println("A) Fortschritt"); System.out.println("B) 21"); System.out.println("C) Carpe Diem"); System.out.println("D) 42"); System.out.println(""); antwortFrage5 = buf.readLine(); System.out.println(""); switch(antwortFrage5) { case "A" : System.out.println("Antwort C ist Falsch! Die richtige Antwort lautet D, Sie haben verloren!"); System.exit(0); case "B" : System.out.println("Antwort B ist Falsch! Die richtige Antwort lautet D, Sie haben verloren!"); System.exit(0); case "D" : System.out.println("Antwort D ist richtig!"); System.out.println(""); System.out.println("Sie haben das Quiz gewonnen, herzlichen Glueckwunsch!"); break; case "C" : System.out.println("Antwort C ist Falsch! Die richtige Antwort lautet D, Sie haben verloren!"); System.exit(0); } } }

public class QuizSwitchCase { public static void main(String[] args) { Programm Programm = new Programm(); Programm.Start(); } }

class Programm { protected void Start() { int fortschritt=1; Fragestellung Fragestellung = new Fragestellung(); do { switch(fortschritt) { case 1: fortschritt=Fragestellung.StelleFrage(fortschritt); break; case 2: System.out.println("Richtig! Es geht weiter mit der nächsten Frage: \n\n\n"); fortschritt=Fragestellung.StelleFrage(fortschritt); break; case 3: System.out.println("Richtig! Es geht weiter mit der nächsten Frage: \n\n\n"); fortschritt=Fragestellung.StelleFrage(fortschritt); break; case 4: System.out.println("Richtig! Es geht weiter mit der nächsten Frage: \n\n\n"); fortschritt=Fragestellung.StelleFrage(fortschritt); break; case 5: fortschritt=Fragestellung.StelleFrage(fortschritt); } } while (fortschritt < 6 && fortschritt != 0); System.out.print("Das Quiz ist nun Vorbei!"); } }

class Fragestellung { protected int StelleFrage(int fortschritt) { Benutzerauswertung Benutzerauswertung = new Benutzerauswertung(); String frage=""; int lösung=0; frage = this.NächsteFrage(fortschritt); lösung = this.NächsteLösung(fortschritt); System.out.println("Frage "+fortschritt+": \n" + frage+"\n" + "1. JA \n" + "2. NEIN"); fortschritt = Benutzerauswertung.BewerteEingabe(fortschritt, lösung); return fortschritt; } private String NächsteFrage (int fortschritt) { String frage=""; switch(fortschritt) { case 1: frage="Ist Java oop?"; break; case 2: frage="Ist Java schwer zu lernen?"; break; case 3: frage="Ist Java eine Insel?"; break; case 4: frage="Ist Java eine Programmiersprache?"; break; case 5: frage="Ist das Quit jetzt fertig?"; break; } return frage; } private int NächsteLösung (int fortschritt) { int lösung=0; switch(fortschritt) { case 1: lösung=1; break; case 2: lösung=2; break; case 3: lösung=2; break; case 4: lösung=1; break; case 5: lösung=1; break; } return lösung; } }

import java.util.Scanner; public class Benutzerauswertung { static Scanner sc = new Scanner(System.in); protected int BewerteEingabe(int fortschritt, int lösung) { if(sc.nextInt() == lösung) { fortschritt++; } else { System.out.println("Schade, das war die falsche Antwort!"); fortschritt=0; } return fortschritt; } }

package de.patrick260.trainYourProgrammer.exercise_7; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class QuizErstellenSwitchCaseAnweisung { public static void main(String[] args) { 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; while (i < 5) { if (!question(i)) { System.out.println("Falsch!"); System.exit(0); } System.out.println("Richtig! \n"); i++; } System.out.println("Herzlichen Glückwunsch, Sie haben Gewonnen!"); } private static boolean question(int i) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); switch (i) { case 0: System.out.println("Wie heißt der 1. schwarze Präsident der USA?"); System.out.println("A) Arnold Schwarzenegger B) Condoleezza Rice C) Barack Obama D) Malcolm X"); try { if ("C".equals(reader.readLine())) return true; } catch (IOException e) { } return false; 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"); try { if ("A".equals(reader.readLine())) return true; } catch (IOException e) { } return false; case 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"); try { if ("B".equals(reader.readLine())) return true; } catch (IOException e) { } return false; case 3: System.out.println("Welches Betriebssystem basiert grob auf Java?"); System.out.println("A) Android B) BIOS C) OS D) Win7"); try { if ("A".equals(reader.readLine())) return true; } catch (IOException e) { } return false; case 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"); try { if ("D".equals(reader.readLine())) return true; } catch (IOException e) { } return false; } return true; } }