while Schleife

Trabbelmaker

Aktives Mitglied
Hi,
ich habe eine kleine Frage zu einer While Schleife.
Kann man bei einer While Schleife ein else setzen, wenn ja wie?
Ich will sagen: Wenn die Variable fehler unter 4 ist soll die While Schleife das innere ausführen. Wenn aber fehler nicht unter 4 ist, soll er das andere ausführen.
Ich habe das bei mir so:
Java:
while(fehler<4) {
	//irgendwas
} else {
	//irgendwas
}
Bei mir zeigt er aber den ein Syntax Error an.
Syntax error on token "else", delete this token.
Ich verstehe das nicht, ich bin mir sicher, dass es mal funktioniert hat :/
Woran kann das liegen?
 
Zuletzt bearbeitet:
Ich bin dabei, ein kleines Quiz zu machen. Wenn man eine falsche Antwort abgegeben hat, soll man 1 Fehlerpunkt geben. Wenn man 3 Fehlerpunkte hat, ist das Spiel zuende und dann sollen keine Fragen mehr kommen.
 
Java:
while(fehler<4) {
	//irgendwas
} else {
	//irgendwas anderes
}

Da die Schleife eh bei fehler > 3 abbricht, sollte doch auch ein
Java:
while(fehler<4) {
	//irgendwas
} 
	//irgendwas anderes
den Zweck erfüllen?

EDIT: ... müsste laut deiner Beschreibung nicht eigentlich auf < 3 geprüft werden?
 
Zuletzt bearbeitet:
Java:
while(fehler<4) {
	//irgendwas
} else {
	//irgendwas anderes
}

Da die Schleife eh bei fehler > 3 abbricht, sollte doch auch ein
Java:
while(fehler<4) {
	//irgendwas
} 
	//irgendwas anderes
den Zweck erfüllen?

EDIT: ... müsste laut deiner Beschreibung nicht eigentlich auf < 3 geprüft werden?

Jo, habe mich vertan 🙂
ok danke, werde mal kurz etwas probieren 🙂

//edit: Ich habe noch ein größeres Problem:
Mein Zähler funktioniert auch nicht :/
Ein Codeausschnitt:
Java:
while(fehler < 3) {
			scan = new Scanner(System.in);
			Random rdm = new Random();
			randomquest = WissenschaftFragenSichtbar[rdm.nextInt(WissenschaftFragenSichtbar.length - 1)];
			System.out.println("Frage: " + randomquest);
				
			if (randomquest.trim().toLowerCase().equals(WissenschaftFragenUnsichtbar[0])) {
				
				System.out.println("Antworten: ");
				System.out.println(WissenschaftAntworten[0]);
				antwort = scan.nextLine();
				
				if (antwort.trim().toLowerCase().equals("a")) {
					System.out.println(AllgemeinerText[0]);
					punktestand = punktestand + punkte;
					System.out.println(AllgemeinerText[1] + punktestand);
					nextround.Wissenschaftquiz();
				} else if(!antwort.trim().toLowerCase().equals("a")) {
					System.out.println(AllgemeinerText[2]);
					fehler++;
					/*if(fehler < 4) {
						System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
						nextround.Wissenschaftquiz();
					} else if(fehler == 3) {
						System.out.println(AllgemeinerText[5]);
					}*/
				}
			}

Ich weiß, er ist sehr unübersichtlich, aber ich habe es nicht so mit den sauberen Coden :/
Problembeschreibung:
Wenn ich eine richtige Antwort abgebe, soll man 10 Punkte bekommen. Aber wenn die nächste Frage kommt und man sie richtig beantwortet, hat man immer noch 10 Punkte. Eigendlich müsste man den 20 Punkte bekommen.
Genauso ist das bei den Fehlern :/
 
Zuletzt bearbeitet:
wenn du dies als spiellogik siehst, würde ich die bedingung der schleife nicht so deklarieren , sondern eher als 'running'

sprich , solange wie eine bestimmte bedingung noch nicht eingetretten ist, ( hier 3 Fehler ) läuft deine schleife, anderfalls wird diese verlassen.

________________________________________

Ich hab hier mal ein kleines Beispiel welches ich gestern fix zusammengezimmert habe, ich verzichte hier , da es sich um eine reine Konsolen-Anwendung handelt auf Multithreading, evtl. auftrettende Fehler sind nicht auszuschließen da wie gesagt es nur als Beispiel für einen anderen Thread hier gedacht war, aber :

Vielleicht kannst du dich daran ein wenig orientieren,
kopier es dir , starte es, probier es aus, ( du spielt lediglich gegen die Bank, nichts besonderes )
wenn du fragen hast immer raus damit.

Bestehend aus 3 Klassen :

Gamer.java
Java:
public class Gamer{

	private int amount;
	private int count;
	
	public Gamer(int amount){
		this.amount = count = amount;
	}
	
	public void increaseAmount(int i){
		amount += i;
	}
	
	public void decreaseAmount(int i){
		amount -= i;
	}
	
	public void reset(){
		amount = count;
	}
	
	public int getAmount()		{return amount;}
}

Bank.java
Java:
public class Bank{

	private int stock;
	private int count;
	
	public Bank(int stock){
		this.stock = count = stock;
	}
	
	public void increaseStock(int i){
		stock += i;
	}
	
	public void decreaseStock(int i){
		stock += i;
	}
	
	public void reset(){
		stock = count;
	}
	
	public int getActualStock()				{return stock;}
}

Game.java
Java:
public class Game{

	Bank bank;
	Gamer gamer;
	
	boolean running;

	
	String[] txt = 
		{
			"Willkommen bei : Lustige Sieben !",
			"Platzieren Sie Ihre Wette auf ein Feld zwischen 2 - 11",
			"Das Spiel ist beendet ! Vielen Dank fürs Spielen !",
			"Leider hatten Sie diesmal kein Glück, die Bank hat gewonnen !",
			"Sie haben gewonnen ! Herzlichen Glückwunsch !",
			"Möchten Sie in neues Spiel starten ? Ja oder Nein ?"
		};
	
	public Game(){
		bank = new Bank(1000);
		gamer = new Gamer(100);
	}
	
	private void reset(){
		bank.reset();
		gamer.reset();
	}
	
	public String setBet(int amount, int field){
		
		if(field > 11 || field < 2) {
			return "Wählen Sie bitte eine Zahl zwischen 2 und 11 !";
		}
		
		String output = "";
		
		if(field == new Random().nextInt(11)) {
			gamer.increaseAmount(amount * 3);
			bank.decreaseStock(amount * 3);
			output = "Diese Runde geht an Sie !";
		}
		else{
			gamer.decreaseAmount(amount);
			bank.increaseStock(amount);
			output = "Leider hatten Sie keinen Glück!";
		}
		return output;
	}
	
	public void start(){
		running = true;
		
		Scanner sc = new Scanner(System.in);
		System.out.println(txt[0]);

		while(running){
			System.out.println(txt[1]);
			String[] in = sc.nextLine().split(",");
			System.out.println(setBet(Integer.parseInt(in[0]), Integer.parseInt(in[1])));
			System.out.println("Sie : " + gamer.getAmount() + " Bank : " + bank.getActualStock());
			
			if(gamer.getAmount() <= 0 || bank.getActualStock() <= 0) {
				if(gamer.getAmount() <= 0) {
					System.out.println(txt[3]);
				}
				if(bank.getActualStock() <= 0) {
					System.out.println(txt[4]);
				}
				System.out.println(txt[5]);
				if(sc.nextLine().equalsIgnoreCase("ja")) {
					reset();
					System.out.println("Ihr Guthaben wurde aufgestockt , eine neue Runde beginnt !");
				}
				else{
					running = false;
				}
			}
		}
		System.out.println(txt[2]);
		sc.close();
	}
	
	public static void main(String[] args){
		new Game().start();
	}
}
 
Zuletzt bearbeitet:
Ne da Steige ich noch nicht so durch 😀.
Ich habe aber immer noch dieses Problem mit den Hochzählen
Wenn ich halt eine Frage richtig habe, sollen + 10 Punkte auf den Punktstand gehen.
Aber wenn ich eine Frage Antworte habe ich 10. Wenn ich noch eine richtig beantworte, habe ich immer noch 10 Punkte.
Bei den Fehlerpunkten zählt das jetzt hoch, nurnicht bei den Punkten :/
Hier ein Codestückchen:
Java:
if (antwort.trim().toLowerCase().equals("a")) {
					System.out.println(AllgemeinerText[0]);
					punktestand = punktestand + punkte;
					System.out.println(AllgemeinerText[1] + punktestand);
					System.out.println(AllgemeinerText[6]);
					nextround.Wissenschaftquiz();
				} else if(!antwort.trim().toLowerCase().equals("a")) {
					System.out.println(AllgemeinerText[2]);
					fehler++;
					System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
					System.out.println(AllgemeinerText[6]);
				}
Ich habe das so gemacht. Die Fehler gehen eine Zahl hoch, wenn ich ein Fehler mache, aber wenn ich Punkte mache, bleiben sie immer auf 10
 
Bei einer richtigen Antwort rechnest du ja

Code:
punktestand = punktestand + punkte

bei einer falschen frage musst du halt einfach

Code:
punktestand = punktestand - punkte;

rechnen,

oder halt in kurzschreibweise

Java:
punktestand += punkte // richtig beantwortet

punktestand -= punkte // bei einer falschen Antwort.
 
Ne so meinte ich das jetzt nicht 😀.
Also die Fehlerpunkte ist eine selbstständige Zahl und hat in keinster Weise mit den Punktestand zutun.
Der Punktestand bleibt immer auf 10 und geht nicht höher. Wenn ich Fragen richtig beantworte,
soll es immer +10 Punkte auf den int punktestand geben.
 
ich bewundere ja kaoZ, dass er dir immer noch folgen kann ...

du schreibst:

Java:
punktestand = punktestand + punkte;

welchen Wert hat denn Punkte? Denn schließlich ist dies der Wert, der auf Punktestand addiert wird.

im Übrigen habe ich in einem vorherigen Beitrag folgendes von dir gelesen:

Java:
if (antwort.trim().toLowerCase().equals("a")) {
 [...}
} else if(!antwort.trim().toLowerCase().equals("a")) {
[...]
}

ein
Java:
if (antwort.trim().toLowerCase().equals("a")) {
 [...}
} else {
[...]
}
reicht dort völlig - wenn die Bedingung nicht wahr ist, muss sie ja zwangsläufig falsch sein.
 
ich bewundere ja kaoZ, dass er dir immer noch folgen kann ...

du schreibst:

Java:
punktestand = punktestand + punkte;

welchen Wert hat denn Punkte? Denn schließlich ist dies der Wert, der auf Punktestand addiert wird.

im Übrigen habe ich in einem vorherigen Beitrag folgendes von dir gelesen:

Java:
if (antwort.trim().toLowerCase().equals("a")) {
 [...}
} else if(!antwort.trim().toLowerCase().equals("a")) {
[...]
}

ein
Java:
if (antwort.trim().toLowerCase().equals("a")) {
 [...}
} else {
[...]
}
reicht dort völlig - wenn die Bedingung nicht wahr ist, muss sie ja zwangsläufig falsch sein.

punktestand hat den 0 wenn das Spiel startet. Wenn man aber eine Frage richtig beantwortet, soll den punktestand +10 dazu addiert werden. Und so geht das halt weiter. Bei jeder richtigen Antwort, sollen immer 10 punkte addiert werden.

ok danke für den Tipp. Werde es verbessern 🙂
 
dann tut es doch statt
Java:
punktestand = punktestand + punkte;
auch
Java:
punktestand = punktestand + 10;
?
 
oder du initialisierst einfach mal punkte mit 10 😉

dann sieht das ganze bei einer richtigen antwort so aus wenn man mal die variablen durch ihre werte ersetzt :

Java:
//Spielstart 
punktestand = 0;
punkte = 10;

....

bla bal

..

Toll ! richtige Antwort !

punktestand += punkte; // ergo  punktestand = 0+10 = 10;

YAY ! nochmal richtig !

punktestand += punkte; // ergo punktestand = 10 + 10 = 20;

ACH FU ! Verkackt ! 

punktestand -= punkte; // ergo punktestand = 20 - 10 = 10;

eigentlich logisch das wenn du punkte mit 0 initialisierst und dann

auf deinen punktestand immer nur 0 addierst und oder subtrahierst das der auch immer 0 bleibt oder :lol:
 
Zuletzt bearbeitet:
Ne so meinte ich das nicht 😀 Also ich habe schon mit 10 Addiert xD.
Ich habe dennoch die Variable punkte entfernt und einfach durch 10 ersetzt.
Dennoch wird nur 10 Punkte angezeigt:
Ganz oben:
Java:
class QuizfragenWissenschaft {
	Scanner scan;
	
	int fehler = 0;
	int punktestand = 0;
	int punkte = 10;
	String randomquest;
	String antwort;

Dann der eigendliche Code:
Java:
while(fehler < 3) {
	scan = new Scanner(System.in);
	Random rdm = new Random();
	randomquest = WissenschaftFragenSichtbar[rdm.nextInt(WissenschaftFragenSichtbar.length - 1)];
	System.out.println("Frage: " + randomquest);
		
	if (randomquest.trim().toLowerCase().equals(WissenschaftFragenUnsichtbar[0])) {
		
		System.out.println("Antworten: ");
		System.out.println(WissenschaftAntworten[0]);
		antwort = scan.nextLine();
		
		if (antwort.trim().toLowerCase().equals("a")) {
			System.out.println(AllgemeinerText[0]);
			punktestand = punktestand + 10;
			System.out.println(AllgemeinerText[1] + punktestand); //Wird immer nur 10 Ausgegeben. Obwohl ich +10 bei jeder richtigen Frage addiere
			System.out.println(AllgemeinerText[6]);
			nextround.Wissenschaftquiz();
		} else if(!antwort.trim().toLowerCase().equals("a")) {
			System.out.println(AllgemeinerText[2]);
			fehler++;
			System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
			System.out.println(AllgemeinerText[6]);
		}
	}
}
 
Einfachste weg : debuggen !

Tip :

Stopfe nicht alles in eine Klasse, dazu ist die OO gedacht das man Verhalten und Eigenschaften in einem Objekt Kapselt.
 
Debug hat auch nichts geändert :/
Irgendwie will habe ich das Gefühl, dass die Zahl garnicht addiert wird, weil die Variable punktestand immer auf 0 bleibt.
Java:
while(fehler < 3) {
	scan = new Scanner(System.in);
	Random rdm = new Random();
	randomquest = WissenschaftFragenSichtbar[rdm.nextInt(WissenschaftFragenSichtbar.length - 1)];
	System.out.println("Frage: " + randomquest);
		
	if (randomquest.trim().toLowerCase().equals(WissenschaftFragenUnsichtbar[0])) {
		
		System.out.println("Antworten: ");
		System.out.println(WissenschaftAntworten[0]);
		antwort = scan.nextLine();
		
		if (antwort.trim().toLowerCase().equals("a")) {
			System.out.println(AllgemeinerText[0]);
			punktestand = punktestand + 10;
			System.out.println(AllgemeinerText[1] + punktestand);
			System.out.println(AllgemeinerText[6]);
			nextround.Wissenschaftquiz();
		} else {
			System.out.println(AllgemeinerText[2]);
			fehler++;
			System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
			System.out.println(AllgemeinerText[6]);
		}
	}
}
 
Java:
package de.Quiz.java;
import java.util.Random;
import java.util.Scanner;

class QuizfragenWissenschaft {
	Scanner scan;
	
	int fehler = 0;
	int punktestand = 0;
	int punkte = 10;
	String randomquest;
	String antwort;
	
	public void Wissenschaftquiz() {
		QuizfragenWissenschaft nextround = new QuizfragenWissenschaft();
		String[] AllgemeinerText =
			{
				"Diese Antwort ist RICHTIG! Du erhälst 10 Punkte.", 		//0 RICHTIGKEITS BESTÄTIGUNG
				"Dein derzeitiger Punktestand geträgt: ",					//1 PUNKTESTANDBERICHT
				"Diese Antwort wahr falsch. Du bekommst 1 Fehlerpunkt.",	//2 FALSCHE ANTWORT
				"Derzeit hast du ",											//3 Fehlerpunktestand Teil 1
				" Fehlerpunkte",											//4 Fehlerpunktestand Teil 2
				"Du hast 3 Fehlerpunkte und musst das Spiel beenden.",		//5 Verloren
				"\n" + ".+*^*+._.+*+._.+*^*+._.+*+._.+*^*+._.+*+._.+*^*+._.+*+._.+*^*+._.+*+." + "\n"													//6 Leerzeichen
			};
		String[] WissenschaftFragenSichtbar = //Die erste Antwort ist richtig
			{
				"Was ist ein anderer Begriff für Ablagerungsgesteine?",
				"Welche Farbe haben die heißesten Sterne?",
				"Wofür sind Tele-X, IRS und Thor II Beispiele?",
				"Wie nennt man die Wechselwirkung, die zwischen einzelnen Molekülen und Atomen wirken?",
				"Welches Elementsymbol hat Bohrium im Periodensystem?"
			};
		
		String[] WissenschaftFragenUnsichtbar =
			{
				"was ist ein anderer begriff für ablagerungsgesteine?",
				"welche farbe haben die heißesten sterne?",
				"wofür sind tele-x, irs und thor ii beispiele?",
				"wie nennt man die wechselwirkung, die zwischen einzelnen molekülen und atomen wirken?",
				"welches elementsymbol hat bohrium im periodensystem?"
			};
		
		String[] WissenschaftAntworten = 
			{
				"A: Sedimente " + "B: Stratomente " + "C: Plutomente " + "D: Rudimente" , 											//Frage 0 	Richtige Antwort: Sedimente					(A)
				"A: Gelb " + "B: Weiß " + "C: Blau " + "D: Rot",																	//Frage 1 	Richtige Antwort: Blau						(C)
				"A: Zwergplaneten " + "B: Satelliten " + "C: Sterne " + "D: Schwarze Löcher",										//Frage 2	Richtige Antwort: Satelliten				(B)
				"A: Van-der-Waals-Kräfte " + "B: Von-Haas-Kräfte " + "C: Van-Persie-Kräfte " + "D: Von-Watson-Kräfte",				//Frage 3	Richtige Antwort: Van-der-Waals-Kräfte		(A)
				"A: Bo " + "B: Br " + "C: Bm " + "D: Bh"																			//Frage 4	Richtige Antwort: Bh						(D)
			};
		
		while(fehler < 3) {
			scan = new Scanner(System.in);
			Random rdm = new Random();
			randomquest = WissenschaftFragenSichtbar[rdm.nextInt(WissenschaftFragenSichtbar.length - 1)];
			System.out.println("Frage: " + randomquest);
				
			if (randomquest.trim().toLowerCase().equals(WissenschaftFragenUnsichtbar[0])) {
				
				System.out.println("Antworten: ");
				System.out.println(WissenschaftAntworten[0]);
				antwort = scan.nextLine();
				
				if (antwort.trim().toLowerCase().equals("a")) {
					System.out.println(AllgemeinerText[0]);
					punktestand = punktestand + 10;
					System.out.println(AllgemeinerText[1] + punktestand);
					System.out.println(AllgemeinerText[6]);
					nextround.Wissenschaftquiz();
				} else {
					System.out.println(AllgemeinerText[2]);
					fehler++;
					System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
					System.out.println(AllgemeinerText[6]);
				}
			} else if(randomquest.trim().toLowerCase().equals(WissenschaftFragenUnsichtbar[1])) {
				
				System.out.println("Antworten: ");
				System.out.println(WissenschaftAntworten[1]);
				antwort = scan.nextLine();
					
				if (antwort.trim().toLowerCase().equals("c")) {
					System.out.println(AllgemeinerText[0]);
					punktestand = punktestand + 10;
					System.out.println(AllgemeinerText[1] + punktestand);
					System.out.println(AllgemeinerText[6]);
					nextround.Wissenschaftquiz();
				} else {
					System.out.println(AllgemeinerText[2]);
					fehler++;
					System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
					System.out.println(AllgemeinerText[6]);
				}
					
			} else if(randomquest.trim().toLowerCase().equals(WissenschaftFragenUnsichtbar[2])) {
				
				System.out.println("Antworten: ");
				System.out.println(WissenschaftAntworten[2]);
				antwort = scan.nextLine();
					
				if (antwort.trim().toLowerCase().equals("b")) {
					System.out.println(AllgemeinerText[0]);
					punktestand = punktestand + 10;
					System.out.println(AllgemeinerText[1] + punktestand);
					System.out.println(AllgemeinerText[6]);
					nextround.Wissenschaftquiz();
				} else {
					System.out.println(AllgemeinerText[2]);
					fehler++;
					System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
					System.out.println(AllgemeinerText[6]);
				}
					
			} else if(randomquest.trim().toLowerCase().equals(WissenschaftFragenUnsichtbar[3])) {
				
				System.out.println("Antworten: ");
				System.out.println(WissenschaftAntworten[3]);
				antwort = scan.nextLine();
					
				if (antwort.trim().toLowerCase().equals("a")) {
					System.out.println(AllgemeinerText[0]);
					punktestand = punktestand + 10;
					System.out.println(AllgemeinerText[1] + punktestand);
					System.out.println(AllgemeinerText[6]);
					nextround.Wissenschaftquiz();
				} else {
					System.out.println(AllgemeinerText[2]);
					fehler++;
					System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
					System.out.println(AllgemeinerText[6]);
				}
					
			} else if(randomquest.trim().toLowerCase().equals(WissenschaftFragenUnsichtbar[4])) {
				
				System.out.println("Antworten: ");
				System.out.println(WissenschaftAntworten[4]);
				antwort = scan.nextLine();
					
				if (antwort.trim().toLowerCase().equals("d")) {
					System.out.println(AllgemeinerText[0]);
					punktestand = punktestand + 10;
					System.out.println(AllgemeinerText[1] + punktestand);
					System.out.println(AllgemeinerText[6]);
					nextround.Wissenschaftquiz();
				} else {
					System.out.println(AllgemeinerText[2]);
					fehler++;
					System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
					System.out.println(AllgemeinerText[6]);
				}
			}
		}
		System.out.println(AllgemeinerText[5]);
	} 
}
Ich weiß, sieht voll unsauber und ungeordnet aus. Ich weiß nicht, wie ich das noch in anderen Klassen aufteilen kann ^^. Wenn diesen Problem behoben wurden, werde ich noch Klassen machen, wo Fragen anderer Themen gestellt werden.
 
einfach mal alle attribute als private deklariert und schon siehst du das du punkte nie verwendest 😉 ich bin gleich soweit..


Du bist auch ein Freund von redundanz wa, mal abgesehen davon passiert rein garnichts wenn ich das ausführe ^^

EDIT : ahhhhh....methoden schreibt man lowerCamelCase 😉

Code:
Frage: Wie nennt man die Wechselwirkung, die zwischen einzelnen Molekülen und Atomen wirken?
Antworten: 
A: Van-der-Waals-Kräfte B: Von-Haas-Kräfte C: Van-Persie-Kräfte D: Von-Watson-Kräfte
a
Diese Antwort ist RICHTIG! Du erhälst 10 Punkte.
Dein derzeitiger Punktestand geträgt: 10

.+*^*+._.+*+._.+*^*+._.+*+._.+*^*+._.+*+._.+*^*+._.+*+._.+*^*+._.+*+.

Frage: Wie nennt man die Wechselwirkung, die zwischen einzelnen Molekülen und Atomen wirken?
Antworten: 
A: Van-der-Waals-Kräfte B: Von-Haas-Kräfte C: Van-Persie-Kräfte D: Von-Watson-Kräfte
A
Diese Antwort ist RICHTIG! Du erhälst 10 Punkte.
Dein derzeitiger Punktestand geträgt: 20

.+*^*+._.+*+._.+*^*+._.+*+._.+*^*+._.+*+._.+*^*+._.+*+._.+*^*+._.+*+.

Frage: Wofür sind Tele-X, IRS und Thor II Beispiele?
Antworten: 
A: Zwergplaneten B: Satelliten C: Sterne D: Schwarze Löcher

Du hast eine instanz zuviel erzeugt :

Java:
	public void Wissenschaftquiz() {
		QuizfragenWissenschaft nextround = new QuizfragenWissenschaft();  // <<------
		String[] AllgemeinerText =
			{


Probier das hier mal aus :

Java:
import java.util.Random;
import java.util.Scanner;
 
class QuizfragenWissenschaft {
	Scanner scan;
 
	private int fehler = 0;
	private int punktestand = 0;
	private int punkte = 10;
	private String randomquest;
	private String antwort;
 
	public void Wissenschaftquiz() {
		String[] AllgemeinerText =
			{
				"Diese Antwort ist RICHTIG! Du erhälst 10 Punkte.", 		//0 RICHTIGKEITS BESTÄTIGUNG
				"Dein derzeitiger Punktestand geträgt: ",					//1 PUNKTESTANDBERICHT
				"Diese Antwort wahr falsch. Du bekommst 1 Fehlerpunkt.",	//2 FALSCHE ANTWORT
				"Derzeit hast du ",											//3 Fehlerpunktestand Teil 1
				" Fehlerpunkte",											//4 Fehlerpunktestand Teil 2
				"Du hast 3 Fehlerpunkte und musst das Spiel beenden.",		//5 Verloren
				"\n" + ".+*^*+._.+*+._.+*^*+._.+*+._.+*^*+._.+*+._.+*^*+._.+*+._.+*^*+._.+*+." + "\n"													//6 Leerzeichen
			};
		String[] WissenschaftFragenSichtbar = //Die erste Antwort ist richtig
			{
				"Was ist ein anderer Begriff für Ablagerungsgesteine?",
				"Welche Farbe haben die heißesten Sterne?",
				"Wofür sind Tele-X, IRS und Thor II Beispiele?",
				"Wie nennt man die Wechselwirkung, die zwischen einzelnen Molekülen und Atomen wirken?",
				"Welches Elementsymbol hat Bohrium im Periodensystem?"
			};
 
		String[] WissenschaftFragenUnsichtbar =
			{
				"was ist ein anderer begriff für ablagerungsgesteine?",
				"welche farbe haben die heißesten sterne?",
				"wofür sind tele-x, irs und thor ii beispiele?",
				"wie nennt man die wechselwirkung, die zwischen einzelnen molekülen und atomen wirken?",
				"welches elementsymbol hat bohrium im periodensystem?"
			};
 
		String[] WissenschaftAntworten = 
			{
				"A: Sedimente " + "B: Stratomente " + "C: Plutomente " + "D: Rudimente" , 											//Frage 0 	Richtige Antwort: Sedimente					(A)
				"A: Gelb " + "B: Weiß " + "C: Blau " + "D: Rot",																	//Frage 1 	Richtige Antwort: Blau						(C)
				"A: Zwergplaneten " + "B: Satelliten " + "C: Sterne " + "D: Schwarze Löcher",										//Frage 2	Richtige Antwort: Satelliten				(B)
				"A: Van-der-Waals-Kräfte " + "B: Von-Haas-Kräfte " + "C: Van-Persie-Kräfte " + "D: Von-Watson-Kräfte",				//Frage 3	Richtige Antwort: Van-der-Waals-Kräfte		(A)
				"A: Bo " + "B: Br " + "C: Bm " + "D: Bh"																			//Frage 4	Richtige Antwort: Bh						(D)
			};
 
		while(fehler < 3) {
			scan = new Scanner(System.in);
			Random rdm = new Random();
			randomquest = WissenschaftFragenSichtbar[rdm.nextInt(WissenschaftFragenSichtbar.length - 1)];
			System.out.println("Frage: " + randomquest);
 
			if (randomquest.trim().toLowerCase().equals(WissenschaftFragenUnsichtbar[0])) {
 
				System.out.println("Antworten: ");
				System.out.println(WissenschaftAntworten[0]);
				antwort = scan.nextLine();
 
				if (antwort.trim().toLowerCase().equals("a")) {
					System.out.println(AllgemeinerText[0]);
					punktestand += punkte;
					System.out.println(AllgemeinerText[1] + punktestand);
					System.out.println(AllgemeinerText[6]);
				} else {
					System.out.println(AllgemeinerText[2]);
					fehler++;
					System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
					System.out.println(AllgemeinerText[6]);
				}
			} else if(randomquest.trim().toLowerCase().equals(WissenschaftFragenUnsichtbar[1])) {
 
				System.out.println("Antworten: ");
				System.out.println(WissenschaftAntworten[1]);
				antwort = scan.nextLine();
 
				if (antwort.trim().toLowerCase().equals("c")) {
					System.out.println(AllgemeinerText[0]);
					punktestand += punkte;
					System.out.println(AllgemeinerText[1] + punktestand);
					System.out.println(AllgemeinerText[6]);
				} else {
					System.out.println(AllgemeinerText[2]);
					fehler++;
					System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
					System.out.println(AllgemeinerText[6]);
				}
 
			} else if(randomquest.trim().toLowerCase().equals(WissenschaftFragenUnsichtbar[2])) {
 
				System.out.println("Antworten: ");
				System.out.println(WissenschaftAntworten[2]);
				antwort = scan.nextLine();
 
				if (antwort.trim().toLowerCase().equals("b")) {
					System.out.println(AllgemeinerText[0]);
					punktestand += punkte;
					System.out.println(AllgemeinerText[1] + punktestand);
					System.out.println(AllgemeinerText[6]);
				} else {
					System.out.println(AllgemeinerText[2]);
					fehler++;
					System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
					System.out.println(AllgemeinerText[6]);
				}
 
			} else if(randomquest.trim().toLowerCase().equals(WissenschaftFragenUnsichtbar[3])) {
 
				System.out.println("Antworten: ");
				System.out.println(WissenschaftAntworten[3]);
				antwort = scan.nextLine();
 
				if (antwort.trim().toLowerCase().equals("a")) {
					System.out.println(AllgemeinerText[0]);
					punktestand += punkte;
					System.out.println(AllgemeinerText[1] + punktestand);
					System.out.println(AllgemeinerText[6]);
				} else {
					System.out.println(AllgemeinerText[2]);
					fehler++;
					System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
					System.out.println(AllgemeinerText[6]);
				}
 
			} else if(randomquest.trim().toLowerCase().equals(WissenschaftFragenUnsichtbar[4])) {
 
				System.out.println("Antworten: ");
				System.out.println(WissenschaftAntworten[4]);
				antwort = scan.nextLine();
 
				if (antwort.trim().toLowerCase().equals("d")) {
					System.out.println(AllgemeinerText[0]);
					punktestand += punkte;
					System.out.println(AllgemeinerText[1] + punktestand);
					System.out.println(AllgemeinerText[6]);
				} else {
					System.out.println(AllgemeinerText[2]);
					fehler++;
					System.out.println(AllgemeinerText[3] + fehler + AllgemeinerText[4]);
					System.out.println(AllgemeinerText[6]);
				}
			}
		}
		System.out.println(AllgemeinerText[5]);
	} 
	
	public static void main(String[] args){
		new QuizfragenWissenschaft().Wissenschaftquiz();
	}
}

Allgemein mal zu deinem Code, ohne das jetzt böse zu meinen, wir haben alle so angefangen :

-unübersichtlich
-redundant
-schlechte Formatierung
-alles in einer Klasse ( schlechte Kapselung)

Um die ganze Code-Verdoppelung aus dem weg zu räumen könntest du eine Methode anbieten welche als Eingabeparameter in char erwartet, oder einen String mit length == 1 (wenn alle Stricke reißen), dieses prüft dann einfach ob Die Anwort mit dem Richtigen Buchstaben oder einer Zahl oder oder oder übereinstimmt.

(ähnlich meinem kleinen Beispiel am Anfang , in der es eine Methode gibt die nur 2 werte entgegen nimmt und mit einer zufallszahl abgleicht , wenn die zahl übereinstimmt, verdreifacht sie deinen einsatz, falls nicht verlierst du deinen Einsatz usw. usw....
 
Zuletzt bearbeitet:
Dein Fehler nur ein dummer Denkfehler!

Du hast deine Klasse "QuizfragenWissenschaft" mit der Methode "Wissenschaftquiz".
Das Attribut "punktestand" ist ein private nicht statische Attribut. Sprich jedes Objekt von der Klasse "QuizfragenWissenschaft" hat seinen eigenen "punktestand".

In der Methode "Wissenschaftquiz" erzeugst du jedes mal ein neues Objekt der Klasse "QuizfragenWissenschaft".
Und von diesem neuen Objekt (diese Objekt hat den "punktestand"=0) rufst du dann die Methode "Wissenschaftquiz" auf.
Somit bleiben deine Punkte immer bei 0!
 
Da steht in dem Post #21 beschrieben.

In deinem Code hat die Methode "WissenschaftQuiz" immer ein neues Objekt deiner Klasse erstellt.
Wenn eine Frage korrekt beantwortet wurde hast du von diesem neuen Objekt (mit dem punktestand = 0) die Methode "WissenschaftQuiz" aufgerufen.
 

Neue Themen


Zurück
Oben