2011-01-13 103 views
3
import java.util.Random; 

public class dice 
{ 
    private int times; 
    private int roll; 
    private int side; 
    Random roller = new Random(); 

    public void setTimes(int sides) 
    { 
    times = sides; 
    } 

    public void setSides(int die) 
    { 
    side = die; 
    } 

    public int getRoll() 
    { 
    int total; //here it is 
    int c = 0; 
    while (c <= times) 
    { 
     c = c + 1; 
     int rol = 0; 
     roll = roller.nextInt(side) + 1; 
     rol = rol + roll; 
     total = rol; //here it is initialized 
    } 
    return total; //here it says variable not initialized 
    } 
} 
+0

您的初始化發生在條件語句中。如果條件不符合會發生什麼? – matt 2011-01-13 20:33:26

+0

嘿,你應該選擇其中一個答案作爲答案。謝謝! – deterb 2011-01-21 01:00:26

回答

1

你已經宣佈它沒有初始化它。在while循環之前給它一個初始值,以便編譯器確信該變量不包含垃圾。

int total = 0; 
+0

好的,謝謝!但現在我有另一個問題。我發表了另一個問題。 – Mac 2011-01-13 20:39:44

4

while循環的內部不保證執行 - 例如,如果times從編程錯誤中小於零。編譯器知道這一點,因此當計算出total是否已初始化時,它不會計入while循環。

0

您需要初始化Java中的局部變量。

int total = 0; //here it is 
int c = 0; 
0

你不只是初始的declared.If循環不執行總時總不等於任何值,因爲變量(角色)宣佈和初始INT更好的你宣佈loop.It和最初的作用在循環之前。