2011-01-13 77 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和最初的作用在循环之前。