Java“int无法解除引用”Arraylist

时间:2017-10-14 15:51:49

标签: java arraylist methods dereference

所以我有一个方法应该创建一个数组列表来保存骰子的随机滚动值。创建卷后,它会将它们添加到循环中的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);

    }

2 个答案:

答案 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;