所以我有一个方法应该创建一个数组列表来保存骰子的随机滚动值。创建卷后,它会将它们添加到循环中的arraylist的元素中。添加它们的行给出了错误“int not be referenced”
然后,当我试图在另一个循环中获得这些卷的总和时,我得到相同的错误。代码如下。我对java很新,我认为问题在于数据类型,arraylist就是它的样子,而dice,faces和sum是静态int。谢谢! 我从我的开头包含了变量声明 以防万一。
public class dice {
static int dice, faces, max, min, mid, x,rolls,sum;
public static void rollValues( int dice ) {
//arraylist holding roll values
ArrayList<Integer> rolls = new ArrayList<Integer>(dice);
}
public static void rollRandomizer(int dice, int faces, int sum){
//randomizing roll values
Random r = new Random();
for(x = 0; x < dice; x++){
int roll = r.nextInt(faces)+1;
rolls.add(x, roll); **<<<error here**
}
System.out.println( "The roll values are: " + rolls);
//summing roll values aka all the numbers in the rolls arraylist
for(x=0; x <dice; x++){
sum += rolls.get(x); **<<<error here**
}
System.out.println("The sum of the rolls is: " + sum);
}
答案 0 :(得分:0)
<强>问题:强>
1-您已在静态方法ArrayList
中声明rollValues
,因此其范围仅限于该方法。无法在该方法之外访问该列表。
2-名为rolls
的类级别变量和ArrayList
的名称相同。
错误原因:
由于上述问题,您收到错误。当您尝试向名为int
的{{1}}添加任何ArrayList
值时,您会收到该错误,因为在rolls
方法之外无法访问ArrayList
但是具有相同名称的类级变量,编译器抛出错误。
<强>解决方案:强>
1-更改rollValues
变量的名称。
2-而不是在任何方法中声明rolls
,而不是在类级别声明它。
答案 1 :(得分:0)
ArrayList<Integer> rolls = new ArrayList<Integer>(dice); // this is method variable, it's available only inside rollValues()
这个:
rolls.add(x, roll);
电话滚入
static int dice, faces, max, min, mid, x,rolls,sum;