Int Value in HashMap auslesen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Moin,

was ist denn in deinem String?

Set<Integer> ausdauerwert = staminaPlayer.get("StringWert");

Wäre so das Vorgehen.

LG

Woher ich das weiß:Berufserfahrung – 💻 Zertifizierter Sr. Cloud Engineer im IT-Consulting
AureumApes 
Fragesteller
 06.12.2020, 18:41
"StringWert"

Was meinste damit?

0
AureumApes 
Fragesteller
 06.12.2020, 18:41

In meinem String ist der Spielername!

0
Dultus, UserMod Light   06.12.2020, 18:43
@AureumApes

Entsprechend dann natürlich anstelle von "StringWert" den Spielernamen. StringWert ist ein Platzhalter für den Wert, den du dort eingeben musst.

0
AureumApes 
Fragesteller
 06.12.2020, 18:55

Dank dir

1
AureumApes 
Fragesteller
 07.12.2020, 17:49

Bis gerade hat alles geklappt! Hetzt kriege ich aber den Fehler, das Ich den Set<Intager> in einen int umwandeln muss! ICh habe geguckt und habe in der HashMap statt int Set<Intager> als wert gesetzt, jetzt kann ich aber die Werte in der Map nicht verändern! (Wenn ich den Set<Intager> in einen int umwandle krige ich einen Fehler)

Sry das ich nocheinmal nerve!

0

Die Ausdauer kannst du aus der Map ja mit staminaPlayer.get("Player123") auslesen. (Player123 ist halt der Name des Spielers, den du auslesen willst)

Wenn du nicht willst, dass der Wert über 100 geht, kannst du den Wert mit Math.min begrenzen:

    private static void regenerateStamina(String playerName, int regeneratePercent) {
		staminaPlayer.put(playerName, Math.min(100, staminaPlayer.get(playerName) + regeneratePercent));
	}

Oder du setzt den Wert von Stamina und prüfst im Nachhinein, ob er über 100 ist und setzt ihn dann halt wieder auf 100:

    private static void regenerateStamina(String playerName, int regeneratePercent) {
		int stamina = staminaPlayer.get(playerName);
		stamina += regeneratePercent;
		if (stamina > 100) {
			stamina = 100;
		}
		staminaPlayer.put(playerName, stamina);
	}

Natürlich wäre es besser, wenn du mit Player-Objekten arbeiten würdest, die ein Feld namens Stamina haben, was du bearbeiten kannst. Das ist der Sinn hinter der objektorientierten Programmierung.

public class Player {
	private String name;
	private int stamina = 100;
	
	public Player(String name) {
		this.name = name;
	}
	
	public void regenerateStamina(int percent) {
		this.stamina += percent;
		if (this.stamina > 100) {
			this.stamina = 100;
		}
	}
	
	public String getName() {
		return this.name;
	}
	
	public int getStamina() {
		return this.stamina;
	}
}