Int Value in HashMap auslesen?
Zu meinem Plugin noch eine Frage:
Ich habe für die Ausdauer eine HashMap angelegt:
Map<String, Integer> staminaPlayer = new HashMap<>();
Nun möchte ich die Ausdauer regenerieren lassen!
Ich möchte sie allerdings nur auf ein bestimmtes Maximum regenerieren lassen!
Also möchte ich eine if-Abfrage machen in der Gefragt wird ob der Int in der Map kleiner als 100 ist. Dafür muss ich aber den Int aus der Map herausholen und vergleichen! Wie geht das?
2 Antworten
Moin,
was ist denn in deinem String?
Set<Integer> ausdauerwert = staminaPlayer.get("StringWert");
Wäre so das Vorgehen.
LG
Öhm, Integer, nicht Intager. Schreibfehler? :-)
Und keine Bange, du nervst nicht. Deshalb bin ich hier auf GF. :-)
Entsprechend dann natürlich anstelle von "StringWert" den Spielernamen. StringWert ist ein Platzhalter für den Wert, den du dort eingeben musst.
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;
}
}
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!