Rechenergebnis im Javaeditor ausgeben & Punktesystem in Java programmieren?

... komplette Frage anzeigen

2 Antworten

Ich denke, dass ich die Fehler gefunden habe. Dass die Punktzahl immer bei 1 blieb liegt ganz einfach daran, dass du die Variable dafür doppelt hattest: global und lokal in der Punkteberechnungsmethode. Die lokale Variable wurde für die Punkteberechnung genutzt und dadurch blieb die Punktzahl gleich.

Das Ergebnis war auch doppelt. Ich war so frei deinen Code soweit anzupassen, dass er funktioniert. Ich habe auch einige Umformatierungen vorgenommen, aber mit der Funktionalität hat das nichts zu tun.

public class Superhirn 
{
public static void main (String[] args)
{
new Spiel();
}
}

class Spiel
{
int zahl1 = zufallszahl(50);
int zahl2 = zufallszahl(50);
int ergebnis;
int punkte1 = 0;
public Spiel() // Konstruktor, Aufruf bei "new"
{
System.out.println("Willkommen bei Superhirn!");
System.out.println("Gleich geht das Spiel los!");
rateEinmal();
}

void rateEinmal()
{
int zahl1 = zufallszahl(50);
int zahl2 = zufallszahl(50);
String operator = rechensymbol();

switch(operator)
{
case "+":
ergebnis = zahl1 + zahl2;
break;
case "-":
ergebnis = zahl1 - zahl2;
break;
case "*":
ergebnis = zahl1 * zahl2;
break;
case "/":
ergebnis = zahl1 / zahl2;
break;
default:
break;
}

System.out.println("Wie viel ist " + zahl1 + operator + zahl2 + "?");
if (leseZahl() == ergebnis) {
System.out.println("Richtig!" );
punktzahl();
rateEinmal();
}
else {
System.out.println("Falsch! Das Ergebnis war " + ergebnis );
System.out.println("GAME OVER!");
}
}
void punktzahl()
{
punkte1++;
System.out.println("Deine Punktanzahl ist " + punkte1 );
}

private String rechensymbol()
{
int zeichen = zufallszahl(3);
if(zeichen == 0){
return "+";
}
else if(zeichen == 1){
return "-";
}
else if(zeichen == 2){
return "*";
}
else {
return "/";
}
}
int zufallszahl(int n)
{
return new java.util.Random().nextInt(n);
}

int leseZahl()
{
return new java.util.Scanner(System.in).nextInt();
}
}

Meine Änderungen habe ich durch Kommentare gekennzeichnet. Du solltest dir jedoch noch überlegen, wie das Programm beendet werden kann ;-) Happy Coding :)


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von McMax013
18.05.2017, 21:20

Danke dir hat mir echt weiter geholfen, aber ich habe noch eine frage..ich habe deinen Code nun kopiert, allerdings sagt mir der Compiler noch, das ; fehlen und zwar beim int zufallszahl und beim int leseZahl.. wenn ich diese allerdings hinzufüge kommt ein andere Fehler..was kann man da machen??

0

Ich habe seit laengerem mit Java nicht besonders viel zu tun gehabt, allerdings kann ich dir zwei Moeglichkeiten vorschlagen:

Du kannst zum Zusammenrechnen entweder mittels switch-case das Rechenzeichen ueberpruefen und das Ergebnis entsprechend mit dem jeweiligen Zeichen zusammenrechnen oder du kannst deine Rechenaufgabe als String als Scriptcode parsen lassen. Einer kurzen Recherche nach sollte das mittels Java Scripting API (ScriptEngineManager) funktionieren.

Fuer die Sache mit der Punktezahl solltest du die Punktezahl nicht vor dem hochrechnen wieder auf 0 setzen. (s. punktezahl Methode)

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?