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:

Trabbelmaker

Aktives Mitglied
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.
 

taro

Bekanntes Mitglied
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:

Trabbelmaker

Aktives Mitglied
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:

kaoZ

Top Contributor
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:

Trabbelmaker

Aktives Mitglied
Ne da Steige ich noch nicht so durch :D.
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
 

kaoZ

Top Contributor
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.
 

Trabbelmaker

Aktives Mitglied
Ne so meinte ich das jetzt nicht :D.
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.
 

taro

Bekanntes Mitglied
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.
 

Trabbelmaker

Aktives Mitglied
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 :)
 

taro

Bekanntes Mitglied
dann tut es doch statt
Java:
punktestand = punktestand + punkte;
auch
Java:
punktestand = punktestand + 10;
?
 

kaoZ

Top Contributor
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:

Trabbelmaker

Aktives Mitglied
Ne so meinte ich das nicht :D 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]);
		}
	}
}
 

taro

Bekanntes Mitglied
wie sieht denn
Java:
nextround.Wissenschaftquiz();
aus?
 
Zuletzt bearbeitet:

kaoZ

Top Contributor
Einfachste weg : debuggen !

Tip :

Stopfe nicht alles in eine Klasse, dazu ist die OO gedacht das man Verhalten und Eigenschaften in einem Objekt Kapselt.
 

Trabbelmaker

Aktives Mitglied
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]);
		}
	}
}
 

Trabbelmaker

Aktives Mitglied
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.
 

kaoZ

Top Contributor
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:

Joose

Top Contributor
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!
 

Joose

Top Contributor
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.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M While-Schleife mit Wartezeit Java Basics - Anfänger-Themen 15
Ranger229 Endless loop in while Schleife Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
Ostkreuz While Schleife neustarten Java Basics - Anfänger-Themen 20
S Erste Schritte do-while Schleife Münzwurf Java Basics - Anfänger-Themen 1
S while Schleife Taschenrechner Java Basics - Anfänger-Themen 1
P Best Practice While loop schleife Java Basics - Anfänger-Themen 5
A Erste Schritte Aufgabe mit while Schleife Java Basics - Anfänger-Themen 11
R do while Schleife Verständnisfrage Java Basics - Anfänger-Themen 2
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
A Return in While Schleife Java Basics - Anfänger-Themen 6
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
J do..while Schleife Java Basics - Anfänger-Themen 14
B Zuweisungen und Methodenaufrufe in Bedingung der while Schleife? Java Basics - Anfänger-Themen 2
JavaBeginner22 Würfeln bis 6 while Schleife Java Basics - Anfänger-Themen 13
L while Schleife mit 2 Bedingung endet nicht Java Basics - Anfänger-Themen 3
D Array mit while-schleife Java Basics - Anfänger-Themen 12
B do while Schleife Java Basics - Anfänger-Themen 3
SergioCK Do while Schleife wiederholen Java Basics - Anfänger-Themen 14
Informatikf Methoden While Schleife Java Basics - Anfänger-Themen 3
M While Schleife? Java Basics - Anfänger-Themen 4
Poppigescorn Quersumme Berechnen mit einer While Schleife Java Basics - Anfänger-Themen 13
M Wie kann ich Werte die in einer While Schleife sind weiter genutzt werden? Java Basics - Anfänger-Themen 7
H Kann eine while-Schleife ein Programm blockieren? Java Basics - Anfänger-Themen 8
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
A Wie schaffe ich das eine while Schleife addiert danach subtrahirt? Java Basics - Anfänger-Themen 1
J for /while Schleife Java Basics - Anfänger-Themen 5
A While Schleife - buubelsort methode Java Basics - Anfänger-Themen 2
J Wie kann ich hier eine While schleife einbauen? Java Basics - Anfänger-Themen 3
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
S Do-While-Schleife Java Basics - Anfänger-Themen 2
S While Schleife Java Basics - Anfänger-Themen 4
S Do-While Schleife Java Basics - Anfänger-Themen 6
L String in Do-While-Schleife Abbruchkriterium Java Basics - Anfänger-Themen 1
CptK Methoden While-Schleife so lange ausführen, wie Methode etwas zurückgibt Java Basics - Anfänger-Themen 2
B Verschachtelung von For-Schleife in While Schleife Java Basics - Anfänger-Themen 14
G while schleife Java Basics - Anfänger-Themen 11
G while schleife mit array Java Basics - Anfänger-Themen 12
L Scanner schließen in While-Schleife? Java Basics - Anfänger-Themen 2
G While schleife Java Basics - Anfänger-Themen 2
mor16Euro Erste Schritte Wie nennt man eine While oder For schleife die nie Ausgeführt wird Java Basics - Anfänger-Themen 5
C Verständnisfrage bezüglich der Do-While Schleife Java Basics - Anfänger-Themen 9
B OOP While Schleife läuft Endlos durch externen aufruf Java Basics - Anfänger-Themen 2
N while Schleife wird nicht beendet, obwohl Sie hätte breaken sollen Java Basics - Anfänger-Themen 4
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
A Erste Schritte while-Schleife Java Basics - Anfänger-Themen 38
X While Do schleife funtioniert nicht Java Basics - Anfänger-Themen 5
J 2 "while"-Anweisungen in einer do-Schleife? Java Basics - Anfänger-Themen 4
W while Schleife und Bedingung Java Basics - Anfänger-Themen 11
T While Schleife funktioniert nicht Java Basics - Anfänger-Themen 14
J Input/Output Strings aneinander reihen mit while schleife Java Basics - Anfänger-Themen 25
S Try-Catch in Verwendung einer while Schleife Java Basics - Anfänger-Themen 2
P a cannot be resolved bei einer do while Schleife Java Basics - Anfänger-Themen 1
J While Schleife Java Basics - Anfänger-Themen 19
Z Return in While-Schleife Java Basics - Anfänger-Themen 7
N Methode mit While-Schleife und If-Bedingung und Array-Initialisierung Java Basics - Anfänger-Themen 4
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
helldunkel While Schleife trotz false Java Basics - Anfänger-Themen 4
E Threads Thread in While-Schleife nur einmal starten Java Basics - Anfänger-Themen 2
R While-Schleife macht nicht was sie soll Java Basics - Anfänger-Themen 24
b1ck while-Schleife Java Basics - Anfänger-Themen 10
b1ck Integer initialisieren bei do-while-Schleife Java Basics - Anfänger-Themen 11
kilopack15 DoWhile-Schleife als While-Schleife darstellen Java Basics - Anfänger-Themen 9
A While-Schleife funktioniert nicht! Java Basics - Anfänger-Themen 33
A Verständnisproblem Ausgabe Do-While-Schleife Java Basics - Anfänger-Themen 3
E Alphabet mit einer while Schleife ausgeben Java Basics - Anfänger-Themen 3
T while schleife starten , beeneden und wieder Starten Java Basics - Anfänger-Themen 8
W Verständnis Probleme bei der while-Schleife und continue Java Basics - Anfänger-Themen 21
B Passwort prüfen bis eindeutig - while Schleife? Java Basics - Anfänger-Themen 11
$ Multiplikations-Rechner mit while Schleife Java Basics - Anfänger-Themen 8
T Variablen Var aus While-Schleife abfragen -.-' Java Basics - Anfänger-Themen 9
snipesss Schlüsselworte While Schleife Java Basics - Anfänger-Themen 3
snipesss While Schleife Java Basics - Anfänger-Themen 6
A Do-While Schleife; int vergleich Java Basics - Anfänger-Themen 2
K For Schleife in While Schleife umwandeln Java Basics - Anfänger-Themen 5
Ste3et_C0st Dynamische While/For Schleife Java Basics - Anfänger-Themen 7
L do-while-Schleife läuft doppelt, try catch fehler Java Basics - Anfänger-Themen 12
A While und For Schleife Java Basics - Anfänger-Themen 2
C Erste Schritte Frage zur do while- und while-Schleife Java Basics - Anfänger-Themen 4
C Do-While Schleife (Fehler bei der Klammerung?) Java Basics - Anfänger-Themen 8
C while-Schleife wird zuoft durchgeführt Java Basics - Anfänger-Themen 2
F Problem do while Schleife und Scanner Java Basics - Anfänger-Themen 2
F Programm bricht While Schleife nicht ab Java Basics - Anfänger-Themen 4
S Verständnis - Frage mehrere SQL Statements in While Schleife Java Basics - Anfänger-Themen 0
C Erste Schritte Warum ist die While Schleife so schnell? Java Basics - Anfänger-Themen 5
A was wird in der while schleife gemacht Java Basics - Anfänger-Themen 3
A Kleines Abbruch-Problem mit Do-While-Schleife Java Basics - Anfänger-Themen 4
Z Logikfehler do-while Schleife Java Basics - Anfänger-Themen 4
E While-Schleife Java Basics - Anfänger-Themen 6
D Textfield im Game ,Problem: while-Schleife Java Basics - Anfänger-Themen 1
A Probleme mit While Schleife Java Basics - Anfänger-Themen 10
M Fibonacci-Folge mit while-Schleife Java Basics - Anfänger-Themen 4
B Summe aller Zahlen von 1 bis zu dieser Zahl (ohne while oder for schleife) Java Basics - Anfänger-Themen 4
LangUndBreit Erste Schritte 100% cpu auslastung (evtl unendliche while schleife?) Java Basics - Anfänger-Themen 1
T Wie vergleiche ich die Jahre aus der while Schleife die in ( public class) fuer cbx geschrieben sind Java Basics - Anfänger-Themen 5
N While Schleife Erklärung Bitte Java Basics - Anfänger-Themen 3
F Problem mit der While schleife und dem Scanner Java Basics - Anfänger-Themen 2
A do while Schleife wird 2 mal durchlaufen Java Basics - Anfänger-Themen 3
Z Compiler-Fehler do while schleife Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben