Kleines Quiz Programm

Schwupsi

Aktives Mitglied
Hi Leute, ich hatte letzte Woche schon einen Thread bezüglich meines Programms eröffnet, wo ich Probleme mit einer int Variable hatte. Danke nochmal für die Hilfe!

Möchte an diesem kleinen Programm weiterarbeiten und es immer weiterentwickeln.
Ich habe eine Klasse "FragenUndAntworten" erstellt, in der ich ein "String[] Frage" Array erstellt habe, in dem ich alle Fragen abgespeichert habe. In der Klasse ist eine Methode, die mit Math.random() der Variablen "k" einen zufälligen Wert zuweist. Mit der Variablen "k" hole ich mir eine zufällige Frage aus dem Array raus -> Frage [k]. Anschließend gibt eine getFrage() Methode die Frage an die main zurück und ich gebe sie dort aus.

Bis hierhin läuft das Programm. Habe jetzt zwei Probleme: Wie mache ich das mit den Antworten? Wie kriege ich das so gecodet, dass für eine zufällige Frage dazu die dazugehörigen Antwortmöglichkeiten rauskommen? Und wie ist das mit der richtigen Antwort? Ein extra Array dafür oder? Komme irgendwie nicht weiter, hoffe auf nützliche Anregungen.

Code Hauptklasse:

Java:
import java.util.Scanner;

public class Quiz {

    static int Punktzahl;
    static Scanner s = new Scanner(System.in);

    public static void main(String[] args) {
     
        String Frage = "";
        String RichtigeAntwort = "";
        FragenUndAntworten Fragen = new FragenUndAntworten (Frage, RichtigeAntwort);
      
        System.out.println("Begrüßung"+ "BlaBla");
        int Eingabe = s.nextInt();
        if (Eingabe == 1) {
            Frage();
            System.out.println("Punktzahl: " + Punktzahl);
        } else {
            System.out.println("Falsche Eingabe! Neu starten!");
        }
    }

    public static void Frage() {
        FragenUndAntworten.Zufallsfrage();
        System.out.println(FragenUndAntworten.getFrage());
        /*    boolean RichtigFalsch;
        String Antwort = s.next();
        if (Antwort.equals(RichtigeAntwort)) {
            System.out.println("Richtige Antwort!");
            RichtigFalsch = true;
            Punktzahl(RichtigFalsch);
        } else {
            System.out.println("Falsche Antwort!");
            RichtigFalsch = false;
            Punktzahl(RichtigFalsch);
        }
        */
    }

    public static int Punktzahl(boolean RichtigFalsch) {
        if (RichtigFalsch) {
            Punktzahl = Punktzahl + 1;
        }
        return Punktzahl;
    }

}

Code der Klasse in der die Fragen und Antworten gespeichert werden sollen:

Java:
public class FragenUndAntworten {
    static String Question;
    static String[] Frage = {      "Frage1?",                     // Frage [0]
                                "Frage2?",                     // Frage [1]
                                "Frage3?",                     // Frage [2]
                                "Frage4?",                     // Frage [3]
                                "Frage5?",                     // Frage [4]
                                "Frage6?",                     // Frage [5]
                                "Frage7?",                     // Frage [6]
                                "Frage8?",                     // Frage [7]
                                "Frage9",                     // Frage [8]
                                "Frage10?"                     // Frage [9]
    };
    static String[] Antwort = {

    };

    public FragenUndAntworten(String Frage, String RichtigeAntwort) {

    }

    public static void Zufallsfrage() {
            int k;
            k = (int) (Math.random() * 10);
            Question = Frage[k];
    }

    static String getFrage() {
        return Question;
    }

}
 
Zuletzt bearbeitet von einem Moderator:

klauskarambulut

Bekanntes Mitglied
Der übliche Weg ist die Fragen nicht als String[] abzulegen sondern als Fragen.

Eine Klasse Frage mit dem Fragetext als String, einer richtigen Antwort und mehreren Falschen Antwortmöglichkeiten.
Java:
public class Antwort {
  public String antwort;
  public Antwort(String antwort) {
    this.antwort = antwort;
  }
}

public class Frage {
  public String frageText;
  public Antwort richtigeAntwort;
  public Antwort[] falscheAntworten;
  public Frage(String frageText, Antwort richtigeAntwort, Antwort[] falscheAntworten) {
    this.frageText = frageText;
    this.richtigeAntwort = richtigeAntwort;
    this.falscheAntworten = falscheAntworten;
  }
}

public class Quiz {
  public Frage[] fragen;
  public Quiz(Frage[] fragen) {
    this.fragen = fragen;
  }

  public void frageStellen() {
    Frage frage = fragen[new Random().nextInt(fragen.length)];
    System.out.println(frage.frageText);
    int richtig = Math.random(frage.falscheAntworten.length+1);
    for(int i = 0; i <= frage.falscheAntworten.length; i++) {
      if(i < richtig) {
        System.out.println(frage.falscheAntworten[I].antwort);
      } else if(i == richtig){
        System.out.println(frage.richtigeAntwort.antwort);
      } else {
        System.out.println(frage.falscheAntworten[i-1].antwort);
      }
    }
  }
  int antwort = antwortEinlesen();
  if(antwort == richtig) {
    System.out.println("Antwort ist korrekt");
  } else {
    System.out.println("Antwort ist falsch");
  }
}
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
klauskarambulut hat dir schon einen guten Ansatz gezeit. Was ich daran nur bemängeln würde: Anstatt einen direkten Zugriff auf die Attribute zu haben würde ich hier mit gettern/settern arbeiten ;)
Aber das ist nur ein Schönheitsfehler. Außerdem kannst du dir die Klasse "Antwort" ersparen und stattdessen einfach String verwenden (die Klasse Antwort macht nichts anderes als den String in eine eigene Klasse zu verpacken)
 

klauskarambulut

Bekanntes Mitglied
Und warum?

Langeweile? Oder hat die IDE das Feature Generate-Getters and Setters?
Das Programm ist ein Monolith. Ein Programmierer der sich nur selbst sabotieren könnte. Da nützen auch keine Getter und Setter.

Geheimnisprinzip und dann doch den ganzen internen State mit Gettern und Settern nach aussen tragen ist Sinnbefreit?
Und wenn er sich doch einmal dazu entscheiden sollte Getter und Setter nutzen zu wollen, dann kann er es immer noch durch eine IDE refactern.

Kurzum Schönheitsfehler ist eine ziemlich weit aus dem Fenster herausgelehnte Anmassung.

Und wenn er mal ne GUI Baut und Bilder nutzen möchte, dann braucht er halt doch Antworten.
 

Joose

Top Contributor
Und warum?
Das Programm ist ein Monolith. Ein Programmierer der sich nur selbst sabotieren könnte. Da nützen auch keine Getter und Setter.

Trotzdem sollte man es von Anfang lernen das man mit gettern/settern arbeiten sollte. Das man als erfahrener Programmierer diese mal weglässt für einen kurzen Test ist ja kein Problem.

Geheimnisprinzip und dann doch den ganzen internen State mit Gettern und Settern nach aussen tragen ist Sinnbefreit?

Nein, es erleichtert unter anderem auch die Fehlersuche ;)
Annahme: Es wird auf ein Attribut ein falscher Wert gesetzt. Ohne Setter hast du vielleicht >10 Stellen wo du einen Breakoint setzen musst damit du alles was gesetzt wird abgefangen wird.
Bei einer Setter Methode gibt es maximal eine Stelle wo der Wert auf das Attribut gesetzt werden kann.

Wenn du den Wert noch bearbeiten willst bevor du ihn setzt: Bei einer Setter Methode musst du nur eine Stelle bearbeiten, usw.

Auch gibt es so nur eine Stelle wo man eine Log-Message ausgeben muss wenn man das loggen will. Ansonsten hättest wie beim oberen Beispiel wieder 10+ Stellen wo du eine Log-Message hinzufügen musst (und dann auch immer wieder so viele anpassen).

Also wie oben schon gesagt für eine kleine Testklasse um etwas auszuprobieren ja warum nicht. In richtigen Programm mit gettern/settern arbeiten!

Und wenn er sich doch einmal dazu entscheiden sollte Getter und Setter nutzen zu wollen, dann kann er es immer noch durch eine IDE refactern.

Das stimmt natürlich.

Kurzum Schönheitsfehler ist eine ziemlich weit aus dem Fenster herausgelehnte Anmassung.

Darüber lässt sich natürlich streiten. Für mich ist es ein Schönheitsfehler (der Code funktioniert zwar, aber man kann es besser lösen).
Aber der Großteil der Java Programmierer würde trotzdem getter/setter verwenden.

Und wenn er mal ne GUI Baut und Bilder nutzen möchte, dann braucht er halt doch Antworten.

Klar wenn er es erweitert wäre vielleicht eine Antwort Klasse sicher praktisch (je nach Anforderung).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Kleines Java-Projekt; Kassenprogramm Java Basics - Anfänger-Themen 7
Kotelettklopfer Kleines Testprogramm mit Interface und einer Usereingabe Java Basics - Anfänger-Themen 16
E Kleines Java-Projekt für Anfänger Java Basics - Anfänger-Themen 10
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
K Erstes kleines Spieleprojekt - Java GUI in HTML einbinden Java Basics - Anfänger-Themen 3
R Kleines Java Spiel funktioniert nicht. Java Basics - Anfänger-Themen 2
J Kleines Rechenprogramm Java Basics - Anfänger-Themen 13
G Erste Schritte Suche Java Programmierer für kleines Projekt Java Basics - Anfänger-Themen 1
Z Erste Schritte Kleines 2D. Spiel Objekt Bewegung funktioniert nicht Java Basics - Anfänger-Themen 2
B Input/Output Kleines Netzwerkproblem Java Basics - Anfänger-Themen 2
J OOP Kleines Schülerverwaltungsprogramm Java Basics - Anfänger-Themen 9
F Methoden Kleines Problem mit meinem Glücksrad... Java Basics - Anfänger-Themen 9
N ein kleines GUI mit einem hauch XML Java Basics - Anfänger-Themen 5
K Kleines Spiel auf Java programmieren Java Basics - Anfänger-Themen 2
T erstes kleines Programm Java Basics - Anfänger-Themen 17
C Hilfe - Kleines Programm macht mir Schwierigkeiten Java Basics - Anfänger-Themen 2
A Kleines Abbruch-Problem mit Do-While-Schleife Java Basics - Anfänger-Themen 4
K Ein kleines Rätsel Java Basics - Anfänger-Themen 2
E Erstes "kleines" Programm Java Basics - Anfänger-Themen 5
D kleines problem bei system.out.println schreibweise Java Basics - Anfänger-Themen 6
C Kleines Problem mit System.out.print Java Basics - Anfänger-Themen 1
A Best Practice Ideen für kleines Anfängerschulprojekt gesucht Java Basics - Anfänger-Themen 4
J kleines Karteikartenprogramm Java Basics - Anfänger-Themen 3
S Kleines Zeichen berechnen Java Basics - Anfänger-Themen 5
fLooojava kleines Projekt - Verwendung von Youtube Java Basics - Anfänger-Themen 22
E Array zu Liste - kleines Problem Java Basics - Anfänger-Themen 6
fLooojava Passwort generieren - kleines Programm Java Basics - Anfänger-Themen 15
H Kleines Prob Java Basics - Anfänger-Themen 5
J Vererbung Kleines Problem bei Vererbung! Java Basics - Anfänger-Themen 2
O Debug-Funktion mit Slick - Kleines Problem Java Basics - Anfänger-Themen 5
J Flaechen vergleichen/kleines Fehler? Java Basics - Anfänger-Themen 23
H Kleines Problem bei den Schleifen Java Basics - Anfänger-Themen 5
M Kleines Problem mit der Rekursion Java Basics - Anfänger-Themen 20
K Kleines Projekt Java Basics - Anfänger-Themen 2
T Kleines Game mit Kollision Java Basics - Anfänger-Themen 2
J Mal wieder ein kleines Toleranzproblem Java Basics - Anfänger-Themen 20
H kleines Spiel [Processing] Java Basics - Anfänger-Themen 7
T kleines problem mit switch case Java Basics - Anfänger-Themen 11
R Kleines Programm, benötige Hilfe! Java Basics - Anfänger-Themen 6
V Schon wieder ein kleines problem...dieses mal mit do-while loop Java Basics - Anfänger-Themen 9
R Login mit Datenbankabfrage: Kleines Problem! Java Basics - Anfänger-Themen 6
K Kleines Anfänger Problem bei der Abfrage Java Basics - Anfänger-Themen 8
X Kleines JMenuBar Problem Java Basics - Anfänger-Themen 8
D Kleines Abfrageproblem Java Basics - Anfänger-Themen 3
K kleines Rekursionsproblem Java Basics - Anfänger-Themen 7
P RSA Verschlüsselung kleines Problem Java Basics - Anfänger-Themen 5
B Suche kleines Java-Applet Java Basics - Anfänger-Themen 6
P Kleines Problemm mit einer NullPointerException Java Basics - Anfänger-Themen 2
R kleines Kunstprogramm "mkbox" perfektionieren Java Basics - Anfänger-Themen 13
P wahrscheinlich ein kleines Problem Java Basics - Anfänger-Themen 7
P Kleines Projekt -> Große Überlegungen Java Basics - Anfänger-Themen 2
U Bitte Helfen kleines Spiel Java Basics - Anfänger-Themen 9
K Kleines Spiel / Daten speichern Java Basics - Anfänger-Themen 8
T Kleines Spiel realisieren - wie? Java Basics - Anfänger-Themen 6
H Kleines Problem mit der Polymorphie Java Basics - Anfänger-Themen 2
S "Kleines" Problem mit dem Timer Java Basics - Anfänger-Themen 4
K kleines Array-Problem Java Basics - Anfänger-Themen 6
C Kleines 2D Spiel. Problem. Java Basics - Anfänger-Themen 5
T Kleines Verständnissproblem mit Regex Java Basics - Anfänger-Themen 4
U Kleines Problem mit Konstruktor^^ Java Basics - Anfänger-Themen 7
S Kleines Kartenspiel mit Java Java Basics - Anfänger-Themen 2
D kleines Eclipse-Problem ! Java Basics - Anfänger-Themen 2
I Kleines Program, fehler? Java Basics - Anfänger-Themen 2
S kleines Würfelspiel Java Basics - Anfänger-Themen 10
0 Frage zu Architektur: Server eines kleines Spiels Java Basics - Anfänger-Themen 4
F kleines Programm für ungerade oder gerade Zahl. Java Basics - Anfänger-Themen 18
C kleines Menü erzeugen und anzeigen Java Basics - Anfänger-Themen 11
S Kleines TickTackTou Java Basics - Anfänger-Themen 10
O Kleines Problem mit Konstruktor mit Parametern aus generischer Klasse...oder so ;) Java Basics - Anfänger-Themen 2
M Kleines Problem mit Threads (synchronized) Java Basics - Anfänger-Themen 3
J Java, kleines denkproblem. :) Java Basics - Anfänger-Themen 4
N Kleines Problemchen mit ButtonGroup Java Basics - Anfänger-Themen 2
W ein kleines Projekt! Aber wie beginnen Java Basics - Anfänger-Themen 4
S Kleines Problem... NaN, Infinity? Java Basics - Anfänger-Themen 9
B Drag and Drop fähige Trackliste..nurnoch ein kleines Problem Java Basics - Anfänger-Themen 16
G Kleines Problem mit File Java Basics - Anfänger-Themen 7
O Neuen Blackberry 8800 oder Curve gegen kleines Programm Java Basics - Anfänger-Themen 9
Z kleines projekt Java Basics - Anfänger-Themen 3
G ein kleines java prog - hat aber einen fehler-bitte um hilfe Java Basics - Anfänger-Themen 5
GambaJo Brauche Bewertung + Tipps für mein kleines Projekt Java Basics - Anfänger-Themen 4
N Nur ein kleines Installationsproblem . Java Basics - Anfänger-Themen 5
G Kleines Problem mit Nimmspiel Java Basics - Anfänger-Themen 8
U kleines problem bei ner aufgabe :( Java Basics - Anfänger-Themen 8
G Kleines Problem mit Array Java Basics - Anfänger-Themen 14
S Kleines Programm mit ArrayList Java Basics - Anfänger-Themen 7
M Kleines Programm Java Basics - Anfänger-Themen 5
M DBCP - Kleines Beispiel Java Basics - Anfänger-Themen 3
R Unicode-Wert in Binär und Dezimal umformen - kleines Problem Java Basics - Anfänger-Themen 1
G Kleines Problem Java Basics - Anfänger-Themen 3
D kleines script abhaengig von Ordner Bilder kopieren Java Basics - Anfänger-Themen 11
G Kleines Grundsatzproblem Java Basics - Anfänger-Themen 5
S Ich habe ein kleines Problem mit meinem Übungsprogramm Java Basics - Anfänger-Themen 7
S Hab ein kleines Problem :) Java Basics - Anfänger-Themen 4
K kleines bild ausgeben Java Basics - Anfänger-Themen 4
D noch ein kleines Problem Java Basics - Anfänger-Themen 4
M kleines generics problem Java Basics - Anfänger-Themen 15
B Kleines? Jedenfalls Problem mit Borland-Together! Java Basics - Anfänger-Themen 4
M kleines Java Programm (Verwaltung) Java Basics - Anfänger-Themen 16
K Kleines Programm zur Stapelverarbeitung schreiben, aber wie? Java Basics - Anfänger-Themen 7
D Kleines Problem mit JDBC Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben