2016-11-22 4 views
0

Ich möchte diese Methode namens "roll", um meine int "SpacePoints" jedes Mal herunterzählen, wenn es aufgerufen wird. Es funktioniert jedoch, es beginnt jedes Mal von 100. Ich brauche es, wenn die Punkte bei jedem Aufruf der Methode stehen bleiben.Schleifen und Halten der Zählung

int spacePoints = 100; 

public void roll(){ 
    pointsRolled = ((int) (Math.random() * 10)+ 1); 
    if (pointsRolled % 3 ==0){ 
    System.out.println("You must fight!!!"); 

    } else { 
     spacePoints = spacePoints- pointsRolled; 
    System.out.println("You have " + spacePoints + " to go."); 

    } 

    } 
+0

Sie haben nicht genügend Code angezeigt. Wenn nichts angezeigt wird, wird jedes Mal, wenn 'roll()' aufgerufen wird, mit 100 begonnen. – John3136

+1

Wie rufen Sie die Methode an? Aus Ihrem Ausschnitt haben Sie "spacePoints" als ein Feld der Klasse und dekrementieren es um "pointsRolled", wenn es nicht durch drei teilbar ist. Sofern Sie nicht jedes Mal, wenn Sie die "roll" -Methode aufrufen, eine neue Instanz Ihrer Klasse erstellen, werden die "spacePoints" von diesem Feld der Klasse "verfolgt". – GameSalutes

Antwort

0

Ihre Frage ist ein wenig unklar, wie @ John3136 erwähnt, aber ich wette, Sie mehr über das Schlüsselwort static lesen müssen und class members verstehen.

+0

Hey, es scheint nach der Verwendung von statischen zu arbeiten. Vielen Dank! –

1

Ich nehme an, Sie mehrere Instanzen der Klasse erstellt, die das Verfahren die roll() Methode enthält. Weil andernfalls im gegenteiligen Fall (eine einzelne Instanz der Klasse) der Wert spacePoints nach jedem Aufruf geändert würde.
Also, Ihr Problem zu lösen, sollten Sie roll() nur auf der gleichen Instanz anrufen und auf diese Weise spacePoints, die auf die gleiche Instanz zugeordnet werden wird von Anruf aktualisiert aufrufen.

MyObject obj = new MyObject(); 
obj.roll(); 
obj.roll(); 
obj.roll(); 
+0

Es wird niemals aufgerufen, wenn spacePoints auf 100 gesetzt ist. Sind Sie sich sicher über Ihre 'while' Bedingung? Bearbeite deine Frage und poste mehr Code, es könnte hilfreich sein. – davidxxx

+0

Das ist ein Fehler. Ich wollte sagen, während (spacePoints> 0) {game.roll();} –

Verwandte Themen