Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Wert einer Klasse in Java abfragen » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Wert einer Klasse in Java abfragen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

Wert einer Klasse in Java abfragen Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich muss ein Programm schreiben, welches das Gefangenendilemma modelliert. Insbesondere soll in einer Klasse Pavlov die Strategie so gewählt werden, dass bei Abweichen der Strategie von Spieler 1 und Spieler 2 im vorhergehenden Zug der Spieler, der am Zug ist mit dieser Strategie nicht kooperieren. Mein Code sieht so aus:

public class Pavlov implements GefStrategie{
boolean lastdecision;
int zugnummer=0;
@Override
public void setOpponentsLastDecision(boolean decision) {
// TODO Auto-generated method stub
this.lastdecision=decision;

}


@Override
public boolean getNextDecision() {
// TODO Auto-generated method stub
zugnummer++;
if (zugnummer==1){
return true;
}
System.out.println(this.getNextDecision());
if (this.getNextDecision()!=lastdecision){
return false;
} else {
return true;
}
}



}

d.h. ich rufe in getNextDecision den aktuellen Wert von getNextDecision durch this.getNextDecision() ab; was führt aber zu einer Fehlermeldung. Wie gelingt es mir auf den aktuellen Wert, der wäre bei Zug 2 bspw. true, von getNextDecision zuzugreifen?
01.12.2013 14:36 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

RE: Wert einer Klasse in Java abfragen Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Eine einfache Lösung besteht darin für den Zustand von getNextDecision eine eigene Variable zu benamen und diese dann in der Methode zu belegen. Die Frage ist: Geht es auch auf die Weise, wie ich es zunächst angefangen habe. Mit einem Befehl analog zu Arrays.toString jetzt eine Art wert.toboolean?
01.12.2013 16:28 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,
in deinem ursprünglichen Programm sehe ich gleich zwei Probleme.
1.: System.out.println(this.getNextDecision());
if (this.getNextDecision()!=lastdecision){
hier rufst du die Methode zweimal auf, bei deiner Implementierung würde ich aber nicht davon ausgehen, dass sie beide Male das selbe Ergebnis ausspuckt.
2.: die Methode getNextDecision() ruft die Methode getNextDecision() auf.
Die wiederum ruft dann erneut getNextDecision() auf und so weiter.
Du hast eine rekursive Funktion ohne Abbruchbedingung geschrieben, die Methode ruft sich immer wieder selbst auf, bis kein Speicher mehr vorhanden ist.

__________________
Syntax Highlighting fürs Board (Link)
01.12.2013 17:58 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Habe es jetzt trivial gelöst: in eigeneEntscheidung ist immer der Wert gespeichert den die Methode vor ihrer Ausführung hatte.

/*
* implementiert GefStrategie
*/
public class Pavlov implements GefStrategie {
boolean lastdecision;
boolean eigeneEntscheidung;
int zugnummer = 1;

/*
* legt die letzte Entscheidung des Gegenuebers fest
*
* @see GefStrategie#setOpponentsLastDecision(boolean)
*/
@Override
public void setOpponentsLastDecision(boolean decision) {
// TODO Auto-generated method stub
this.lastdecision = decision;

}

/*
* der erste Zug kooperiert; kooperiert, falls seine letzte Entscheidung von
* der des Gegenuebers abweicht, sonst kooperiert er nicht
* @return Zugwahl true ist kooperieren, false ist nicht kooperieren
* @see GefStrategie#getNextDecision()
*/
@Override
public boolean getNextDecision() {
// TODO Auto-generated method stub
if (zugnummer == 1) {
zugnummer++;
eigeneEntscheidung = true;
return true;
}
if (eigeneEntscheidung == lastdecision) {
eigeneEntscheidung = false;
return false;
} else {
eigeneEntscheidung = true;
return true;
}
}

}
02.12.2013 13:01 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Wert einer Klasse in Java abfragen