2016-11-22 76 views
0

我希望這種稱爲「roll」的方法在每次調用它時統計我的int「spacePoints」。它可以工作,但每次從100開始。我需要它在每次調用方法時都停止點的地方開始。循環和保持計數

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

您尚未看到足夠的驗證碼。每次調用'roll()'時,沒有任何顯示會使它從100開始。 – John3136

+1

你打電話的方法如何?從你的片段中,你可以將「spacePoints」作爲課程的一個領域,當它不能被3整除時,它將被「pointsRolled」遞減。除非您每次調用「roll」方法時都創建類的新實例,否則它將跟蹤該類的該字段的「spacePoints」。 – GameSalutes

回答

0

你的問題是有點不清楚,因爲@ John3136提及,但我打賭你需要閱讀更多有關static關鍵字和理解class members

+0

嘿,它似乎在使用靜態後工作。謝謝! –

1

我想你創建了包含方法roll()方法的類的多個實例。因爲在其他情況下,在相反的情況下(類的單個實例),spacePoints值將在每次調用後修改。
因此,要解決您的問題,您應該只在同一個實例上調用roll(),並且以這種方式,spacePoints將關聯到同一個實例的呼叫更新。

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

如果spacePoints設置爲100,它將永遠不會被調用。你確定你的'while'條件嗎?編輯您的問題併發布更多代碼,這可能會有所幫助。 – davidxxx

+0

這是一個錯誤。我的意思是說,while(spacePoints> 0){game.roll();} –