Erste Schritte Zufällige Variable wird nicht um 1 erhöht

Bitte aktiviere JavaScript!
Hey Com, ich lerne Java seit ein paar Monaten in der Schule und befasse mich immer mehr auch in meiner Freizeit mit Java. Ich habe angefangen ein kleines Textadventure zu schreiben (bisher nicht viel - Gegner macht Schaden, ich mache Schaden = Werte werden von den Lebenspunkten beider abgezogen) und wollte jetzt ein kleines Levelsystem einbauen. Ich habe es ersteinmal als einzelnen Code ausprobiert.
Den Code habe ich beigefügt und habe, um die Werte abzulesen, zwischendurch System.out.print's eingesetzt. Da eine Zahl zwischen 0 und maxDropExp(=1) generiert werden würde, wollte ich es immer um 1 erhöhen, sodass es dann entweder 1 oder 2 EXP sind.
Nun das Problem: Sowohl dropExp (also die Zahl, die 0 oder 1 sein sollte), als auch dropExp nachdem ich 1 dazu addiert habe (also die Zahl, die 1 oder 2 sein sollte), bleiben konstant bei 1. Könnt ihr mir evtl. weiterhelfen ?

Java:
import java.util.Random;
public class exp {
	public static void main(String[] args) {
			//Var
			Random rand = new Random();
			int level = 1;
			int maxLevel = 3;
			int spielerExp = 0;
			int maxSpielerExp = 10;
			int maxDropExp = 1;
			byte multiplikatorExp = 1;
			
			while(level < maxLevel) {
				int dropExp = rand.nextInt(maxDropExp);
				System.out.println("DropExp "+dropExp+"\n");
				dropExp = dropExp+1;
				System.out.println("DropExp & Multiplikator "+dropExp+"\n");
				spielerExp = spielerExp+dropExp;
				System.out.println("spielerExp "+spielerExp+"\n");
				
				System.out.println("Du hast "+dropExp+" EXP erhalten.");
				
				if(spielerExp<maxSpielerExp) {
					System.out.println("Du hast nun "+spielerExp+"/"+maxSpielerExp+" EXP.");
				}else {
					System.out.println("Du hast genügend EXP gesammelt und steigst nun ein Level auf!");
					level++;
					spielerExp = spielerExp-maxSpielerExp;
					System.out.println("Du bist nun Level "+level+"!");
					maxSpielerExp = maxSpielerExp+2;
					System.out.println("Du brauchst nun "+maxSpielerExp+" EXP bis zum nächsten Levelaufstieg!");
				}
			}
	}
}
 
Also deine rand Methode gibt dir so halt nicht 0 oder 1 sondern immer 0, da der max Wert bei nextInt immer EXCLUSIVE ist.
 
Zuletzt bearbeitet:
Wenn du r.nextInt(4) eingibst können Werte zwischen 0,1,2 und 3 ausgegeben werden. Das bedeutet, dass die angegebene 4 ausgeschlossen die 0 eingeschlossen ist. Deswegen solltest du in deinem Code r.nextInt(maxDropExp + 1) schreiben , was äquivalent zu r.nextInt(2) ist und dieses wiederum die Zahlen 0 und 1 zurückgeben kann.
Wenn du ,so wie Franky bereits gesagt hat, nur r.nextInt(1) da stehen hast, dann wird 0 eingeschlossen und 1 ausgeschlossen.
Hoffe du hast es verstanden.

Anmerkung:
Bist du dir sicher das Exp eine Klasse ist? Oder vielleicht doch ein Attribut einer Klasse Spieler?

Bei weiteren Fragen kannst du mir ne PN schreiben.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben