使用随机数调整整数数组的大小

时间:2015-04-24 17:32:12

标签: java arrays for-loop random

我正在尝试创建一个Integer [],每个循环增加10的倍数。一旦设置了Integer []大小,我希望它用随机整数填充数组。我能够增加数组的大小,但存储在其中的值为null。  对我来说,这意味着数组正在正确调整大小,但它们的元素没有分配给任何东西。我正在尝试双循环,内循环分配随机值。如果有更好的方法(我确信有b / c我没有运行!)你能帮忙吗?

这是我创建的Int []

 public class TimeComplexity {

    Integer[] data;

    public TimeComplexity() 
    {
        Random random = new Random();

        for (int N = 1000; N <= 1000000;  N *= 10) 
        {
            N = random.nextInt(N);
            data = new Integer[N];
            //checking to see if the random numbers were added.
            //array size is okay but locations aren't taking a 
            //random number
            System.out.println(Arrays.toString(data));

        }

    }

如果您对我的主要课程的输出感兴趣。 (这不是问题的一部分,但如果你有建议我会爱他们!)

public class TimeComplexityApp {

    private static int MAXSIZE = 1000000;
    private static int STARTSIZE = 1000;

    public TimeComplexityApp() 
    {
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args) {

        TimeComplexity time = new TimeComplexity();
        System.out.println(time);
        System.out.printf("%-6s %13s %13s\n\n\n","ARRAY","int","INTEGER");

        for (int N = STARTSIZE; N <= MAXSIZE;  N *= 10) 
        {
            double d = 1.0;
            System.out.printf("\n%-6d %15.2f %15.2f\n", N, d, d);
        }
    }

}

2 个答案:

答案 0 :(得分:1)

在显示缺少的第一个源代码中初始化整数数组的元素。

data = new整数[N];只创建大小为N的整数数组,缺少包含数组每个单元格中的元素。

因此,只需要一个循环来完成每个元素或单元格数组:

for (int i = 0; i <N; i ++)
    data [i] = random.nextInt (N);

现在这个数组已经完成,并且不会在每个项目上返回NULL。

答案 1 :(得分:0)

在循环的每次迭代中,您将创建一个随机(int size)长度的新数组。但是你永远不会把任何东西放进去。正确的方法是:

int[] vals = ...;
for (int i = 0; i < end - start; i++) {
  if (vals.length < i; i++) {
     //1. create new larger int[]
     //2. copy the old array into the new array
     //3. vals = yourNewArray
  }
  vals[i] = random.nextInt();
}