1

我正在尝试制作一个 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

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

4

5 回答 5

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;
 }

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

于 2013-11-07T10:46:15.787 回答
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);  
于 2013-11-07T10:47:03.240 回答
1

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

于 2013-11-07T10:48:01.383 回答
0

在循环外声明变量

由于您在循环内声明了变量int[] values;,因此该变量在循环内具有范围,并且在循环外不可见,因此在外部声明它,使其范围变为完整程序。

于 2013-11-07T10:51:22.803 回答
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]);      
        }
    }
}
于 2013-11-07T11:01:42.753 回答