Hallo an alle,
Problembeschreibung: es sollen alle Werte der Spielkarten summiert werden.
Es kommen dabei total krumme Werte raus und ich weiß nicht warum.
Ich habe mich in die ArrayList eingelesen und gegoogelt, jedoch scheint es, ich habe die
Addition der ArrayList richtig umgesetzt, das Ergebnis untermauert es leider nicht.
Was mache ich hier falsch? Bin ziemlich verwirrt!
LG
Problembeschreibung: es sollen alle Werte der Spielkarten summiert werden.
Es kommen dabei total krumme Werte raus und ich weiß nicht warum.
Ich habe mich in die ArrayList eingelesen und gegoogelt, jedoch scheint es, ich habe die
Addition der ArrayList richtig umgesetzt, das Ergebnis untermauert es leider nicht.
Was mache ich hier falsch? Bin ziemlich verwirrt!
LG
Java:
package siebzehnvierzwei;
/**
*
* @author Javinner
*/
public class SiebzehnVierZwei
{
public static void main(String[] args)
{
Spieler spieler = new Spieler();
SpielCasino spielCasino = new SpielCasino();
System.out.println("Aktuelle Hand" + spieler.getHand());
System.out.println();
spielCasino.spiel_17_4(spieler);
System.out.println("Aktuelle Hand" + spieler.getHand());
}
}
Java:
package siebzehnvierzwei;
import java.util.ArrayList;
/**
*
* @author Javinner
*/
public class Spieler
{
/**
* ArrayList {@code spielKartes} speichert alle gezogenen Karten des
* Spielers;
*/
private final ArrayList<SpielKarte> spielKartes = new ArrayList<>();
/**
* {@code hand} Summe Wert aller Karten;
*/
private int hand;
/**
* {@code guthaben} aktuelles Guthaben des Spielers;
*/
private double guthaben;
/**
* fuegt die naechste Spielkarte der ArrayList {@code spielKartes} zu;
*/
void addToHand(SpielKarte sk)
{
spielKartes.add(sk);
}
/**
* liefert die Hand des Spielers;
*
* @return {@code hand} die Hand des Spielers
*/
int getHand()
{
getSummeSpielKarten();
return hand;
}
/**
* Abfrage aktuelles {@code guthaben} Spieler;
*
* @return {@code guthaben} aktuell
*/
double getGuthaben()
{
return this.guthaben;
}
/**
* addiert den {@code gewinn} zum aktuellen {@code guthaben}
*/
void addGuthaben(double gewinn)
{
this.guthaben += gewinn;
}
/**
* subtrahiert den {@code verlust} vom aktuellen {@code guthaben}
*/
void subGuthaben(double verlust)
{
this.guthaben -= verlust;
}
/**
* durchlaeuft die ArrayList {@code spielKartes} und addiert
* den {@code wert} aller Spielkarten zu {@code hand}
*/
private void getSummeSpielKarten()
{
for (SpielKarte sk : spielKartes) {
hand += sk.getWert();
}
}
}
Java:
package siebzehnvierzwei;
import java.util.Random;
/**
*
* @author Javinner
*/
class SpielKarte
{
/**
* {@code wert} jeder Karte zwischen {@code zahlenWertKlein}
* und {@code zahlenWertGross}
*/
private final int wert;
/**
* untere Grenze des Spiels 17 von 4
*/
private final int zahlenWertKlein = 2;
/**
* obere Grenze des Spiels 17 von 4
*/
private final int zahlenWertGross = 11;
/**
* initialisiert eine neue Spielkarte mit
* {@code zufallswert}
*/
public SpielKarte()
{
this.wert = zufallsWert();
}
/**
* liefert den Zufallswert einer Zahl in Grenzen des
* Spiels 17 von 4;
*
* @return {@code zufallswert}
*/
private int zufallsWert()
{
Random ran = new Random();
int zahl = ran.nextInt((zahlenWertGross - zahlenWertKlein));
System.out.println(zahl);
return zahl + zahlenWertKlein;
}
/**
* liefert den {@code wert} der jeweiligen Spielkarte
*
* @return {@code wert}
*/
int getWert()
{
return this.wert;
}
}
Java:
static final int MAX_SPIEL_17_4 = 21;
void spiel_17_4(Spieler spieler)
{
String input;
do{
druckeFrageNochEineKarte();
input = scanner.nextLine();
if(input.trim().equalsIgnoreCase("Ja"))
{
spieler.addToHand(new SpielKarte());
}
}while(!input.trim().equalsIgnoreCase("Nein")&& spieler.getHand() <= MAX_SPIEL_17_4);
}
Java:
Aktuelle Hand: 0
Wollen Sie eine Karte?
Abbruch jederzeit mit "Nein"
ja
7
Wollen Sie eine Karte?
Abbruch jederzeit mit "Nein"
ja
3
Wollen Sie eine Karte?
Abbruch jederzeit mit "Nein"
nein
Aktuelle Hand: 27
Zuletzt bearbeitet: