滚动20个骰子n次,并在数组中打印值 - java

时间:2013-11-07 10:45:18

标签: java arrays dice

我正在尝试创建一个Java程序,它可以在1-20之间生成n个随机值,并将它们放在一个数组中。到目前为止,我的计划是:

public class bias{
    public static void main(String[] as){
        for (int n = 10; 0 < n; n--){
            int[] values;
            values = new int[n];
            int b = (int)(Math.random()*20) + 1;
            values[n--] = b;
        }
        System.out.println(values.length);      
    }
}

但是我在编译时遇到错误:

C:\javas>javac bias.java
bias.java:9 error: cannot find symbol
              System.out.printLn<values.length>;
  symbol: variable values 
  location: class bias
1 error

我似乎无法理解和调试,我的问题是什么?

5 个答案:

答案 0 :(得分:3)

int[] values;应该在for循环之外。

如下所示

 int[] values = new int[10];    
 for (int n = 10; 0 < n; n--){           
           int b = (int)(Math.random()*20) + 1;
           values[n] =b;
 }

从for循环中删除int[] values; values = new int[n];。它将为每次迭代创建新数组。

答案 1 :(得分:2)

您在for循环内声明了您的值对象,因此它只在其中可用。 将它移到循环之外。

我建议您查看变量范围:http://www.java-made-easy.com/variable-scope.html

我认为你想要的是:

int[] values = new int[10];    
for (int n = 10; 0 < n; n--){           
    values[n] = (int)(Math.random()*20) + 1;
} 
System.out.println(values.length);  

答案 2 :(得分:1)

当您尝试打印其长度时,values数组只是超出范围。其范围仅限于for代码块。

答案 3 :(得分:0)

在循环外声明变量

因为你已经在循环中声明了变量int[] values;所以这个变量在循环中有范围,并且在循环外部不可见,所以在外面声明它,这样它的范围就变成了完整的程序。

答案 4 :(得分:0)

这是您需要做的解决方案,从控制台读取数字n 创建一个这个大小的数组,然后继续添加数字。 然后你可以遍历数组以获得所有值。

public class bias{
    public static void main(String[] as){

        DataInputStream dis=new DataInputStream (System.in);
        System.out.println ("Enter number n: ");
        String s1=dis.readLine ();
        int num = int n1=Integer.parseInt (s1);
        int[] values = new int[num];
        for (int n = 0; n < num; n++){
            int b = (int)(Math.random()*20) + 1;
            values[n] = b;
        }
        System.out.println(values.length);      
        for (int n = 0; n < num; n++){
            System.out.println(values[n]);      
        }
    }
}