Czemu zawsze zwraca 0?

Czemu zawsze zwraca 0?
SR
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 6 lat
  • Postów:17
0

Ta metoda zawsze zwraca 0...

public static int walka() {
boolean dead = false;

	int zadaneDmg = 0;
przeciwnik p1 = new przeciwnik(3, 20);

	while(dead  = false) {
		
		zadaneDmg += przeciwnik.damage;
		if(przeciwnik.health - Gracz.damage <= 0) {
			dead = true;
			break;
		}
		
	}
	dead = false;
return zadaneDmg;

	}
Black007
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 dni
0

while(dead = false) { powinno być while(dead ==false) {


"Nie popełnia błędów tylko ten, kto nic nie robi"
SR
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 6 lat
  • Postów:17
0
Black007 napisał(a):

while(dead = false) { powinno być while(dead ==false) {

Dzięki wielkie!
Jedno pytanie tylko: czy kiedykolwiek korzystamy z pojedynczego znaku równania do porównywania?

SR
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 6 lat
  • Postów:17
0
Black007 napisał(a):

while(dead = false) { powinno być while(dead ==false) {

Jednak to chyba nie to, bo sprawdziłem i nadal zwraca 0

KP
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 6 lat
0
stasiek_raczejava napisał(a):
Black007 napisał(a):

while(dead = false) { powinno być while(dead ==false) {

Dzięki wielkie!
Jedno pytanie tylko: czy kiedykolwiek korzystamy z pojedynczego znaku równania do porównywania?

Nie, pojedynczy to przypisanie.

SR
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 6 lat
  • Postów:17
0
Krzywy Pomidorek napisał(a):
stasiek_raczejava napisał(a):
Black007 napisał(a):

while(dead = false) { powinno być while(dead ==false) {

Dzięki wielkie!
Jedno pytanie tylko: czy kiedykolwiek korzystamy z pojedynczego znaku równania do porównywania?

Nie, pojedynczy to przypisanie.
thx

Pieter24
  • Rejestracja:około 8 lat
  • Ostatnio:prawie 7 lat
  • Postów:90
0

Stworzyłeś obiekt typu przeciwnik (p1) a później i tak używasz jakiegoś pola z klasy przeciwnik. Jak już to p1.damage. Po drugie używaj gettery i settery. Po trzecie i ostanie :) lepsza pomoc będzie jak pokażesz cały kod i klasę przeciwnik.

KL
  • Rejestracja:prawie 8 lat
  • Ostatnio:5 miesięcy
  • Postów:191
0

Nie widać co robisz po drodze z obrażeniami gracza i zdrowiem przeciwnika, tak samo nie wiadomo co się kryje pod przeciwnik.damage. Prawdopodobnie gdzieś tam masz chochoła, a przypisanie zamiast porównania to tylko jeden z kilku błędów.

A fakt, jw. dodatkowo odwołujesz się do pola klasy, a nie obiektu, tak samo w przypadku gracza, jak się domyślam.

edytowany 1x, ostatnio: Klojtex
Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:18 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
1

Na początek obrazek, dla przykucia uwagi

stanisławie-zacznijmy-od-testu.jpg

A w zasadzie od zamknięcia tego kodu w metodzie:

Kopiuj
public int battle(Gracz gracz, Przeciwnik przeciwnik) {
		boolean dead = false;
		int zadaneDmg = 0;
		while (!dead) {
			zadaneDmg += przeciwnik.damage;
			przeciwnik.health -= gracz.damage;
			if (przeciwnik.health <= 0) {
				dead = true;
				break;
			}
		}
		return zadaneDmg;
	}

W twoim kodzie masz maleńki błąd, który wszystko rozwala:

Kopiuj
 if(przeciwnik.health - Gracz.damage <= 0) {

health nigdy się nie zmniejsza.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.