向数组添加随机数的问题

时间:2014-07-10 02:45:50

标签: java arrays

我正在尝试将随机数添加到空数组20个数字0-99。当我运行下面的代码时,它打印出51个数字,它们都是0.

有人可以帮我弄清楚我在这里做错了什么。

import java.util.Random;

public class SortedArray 
{

    int randomValues;
    int[] value;

    public SortedArray()
    {
    }


    public int getRandom()
            {
              Random random = new Random();
              for(int j=0; j<20; j++)
              {
                 randomValues = random.nextInt(100);
              }
              return randomValues;
            }

    public int getArray()
    {
        int result = 0;
        value = new int[randomValues];
        for(int item : value)
        {
            System.out.println("The array contains " + item);
        }
        return result;
    }

}

这是我的主要方法

public class ReturnSortedArray 
{
    public static void main(String[] args)
    {
        SortedArray newArray = new SortedArray();

        int random = newArray.getRandom();
        int array = newArray.getArray();
        System.out.println(array);
    }
}

2 个答案:

答案 0 :(得分:2)

在您的方法getArray

代码

value = new int[randomValues];

只是创建一个大小为ramdomValues的新的空int数组。

由于int的默认值是0,这就是你得到的

同样在您的方法getRandom中,您一次又一次地设置相同的值

for (...)
    randomValues = random.nextInt(100);

public int[] getRandomArr()
{
  int randomValues [] = new int [20];
  Random random = new Random();
  for(int j=0; j<20; j++)
  {
     randomValues[j] = random.nextInt(100);
  }
  return randomValues;
}

答案 1 :(得分:0)

我看到一些问题,您应该在构造函数中设置值。您也可以将其称为set方法(因为它实际上不是get)。此外,您的getArray()不会返回数组。所以,我认为你真的想要这样的东西,

public class SortedArray {
  private Random random = new Random();
  private int[] value = new int[20];

  public SortedArray() {
    super();
    setRandomValues();
  }

  public void setRandomValues() {
    for (int j = 0; j < value.length; j++) {
      value[j] = random.nextInt(100);
    }
  }

  public int[] getArray() {
    return value;
  }
}

然后你的主要方法应该像

一样更新
public static void main(String[] args) {
  SortedArray newArray = new SortedArray();

  int[] array = newArray.getArray();
  System.out.println(Arrays.toString(array));
}