Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 避免在不同的函数中生成随机整数_Java_Arrays - Fatal编程技术网

Java 避免在不同的函数中生成随机整数

Java 避免在不同的函数中生成随机整数,java,arrays,Java,Arrays,我的职能: public int[] generateRandomInteger(){ int[] arr = new int[100]; Random randomGenerator = new Random(); for (int i = 0; i < 100; i++){ int randomInt = randomGenerator.nextInt(16) + 10; arr[i] = randomInt; }

我的职能:

public int[] generateRandomInteger(){
    int[] arr = new int[100];
    Random randomGenerator = new Random();

    for (int i = 0; i < 100; i++){
        int randomInt = randomGenerator.nextInt(16) + 10;
        arr[i] = randomInt;
    }        
    return arr;
}
public int[]generateRandomInteger(){
int[]arr=新int[100];
Random randomGenerator=新的Random();
对于(int i=0;i<100;i++){
int randomInt=randomGenerator.nextInt(16)+10;
arr[i]=randomInt;
}        
返回arr;
}
问题是:当我在另一个函数中使用arr时,它将生成一个包含100个整数的不同数组。我怎样才能避免这个问题?我只想使用上面函数生成的数组


任何帮助都将被感激

只需生成一次,并始终使用它

int[] array = generateRandomInteger();
// operate on it...
// or pass it to another function
modifyArray(array);
System.out.println(Arrays.toString(array));
在哪里

public void modifyArray(int[]数组)
{
对于(int i=0;i
您可以在创建随机实例时使用种子。如果调用顺序相同,则使用相同种子创建的每个随机实例将返回相同的结果。但我同意Rohit Jain的观点,您可能希望保留数组的一个实例//这将保留生成的数组
private int[] generatedArray = null; //This keeps the array you generated
private int randomIdx = 0; //This keeps track of where you are

//This function controls access to your random numbers.
public int getNextInt() {
  if (this.generatedArray == null) {
    this.generatedArray = generateRandomInteger();
    randomIdx = 0;
  }

  return generatedArray[randomIdx++];
}

//Technically this doesn't need to be in the same class
//We keep it untouched, though, in case you need the functionality as-is
public int[] generateRandomInteger(){
    int[] arr = new int[100];
    Random randomGenerator = new Random();

    for (int i = 0; i < 100; i++){
        int randomInt = randomGenerator.nextInt(16) + 10;
        arr[i] = randomInt;
    }        
    return arr;
}
私有int randomIdx=0//这会记录你在哪里 //此函数控制对随机数的访问。 public int getNextInt(){ if(this.generatedArray==null){ this.generatedArray=generateRandomInteger(); randomIdx=0; } 返回生成的数组[randomIdx++]; } //从技术上讲,这不需要在同一个类中 //不过,我们会保持它不变,以防您需要现有的功能 public int[]generateRandomInteger(){ int[]arr=新int[100]; Random randomGenerator=新的Random(); 对于(int i=0;i<100;i++){ int randomInt=randomGenerator.nextInt(16)+10; arr[i]=randomInt; } 返回arr; }
如果希望所有对象共用
arr
变量,请使用静态变量


您可以用这种方式定义一个单例实例

public class ArrayIntGenerator {
  private int[] array;
  private ArrayIntGenerator()
  {
      this.array = new int[100];
      Random randomGenerator = new Random();
        for (int i = 0; i < 100; i++){
            int randomInt = randomGenerator.nextInt(16) + 10;
            this.array[i] = randomInt;
        }
  }
  private static ArrayIntGenerator instance = null;

  public final static ArrayIntGenerator getInstance() {
    if(null == instance) instance = new ArrayIntGenerator();
    return instance;
  }

  public int[] getArray() {
    return this.array;
  }
}
公共类数组生成器{
私有int[]数组;
专用阵列生成器()
{
this.array=新整数[100];
Random randomGenerator=新的Random();
对于(int i=0;i<100;i++){
int randomInt=randomGenerator.nextInt(16)+10;
this.array[i]=randomInt;
}
}
私有静态ArrayIntGenerator实例=null;
公共最终静态数组生成程序getInstance(){
如果(null==instance)instance=new ArrayIntGenerator();
返回实例;
}
public int[]getArray(){
返回此.array;
}
}

并使用
ArrayIntGenerator.getInstance().getArray()访问
int[]
,是否将该数组设置为实例字段?还是类字段?你能给我举个例子吗?非常感谢!这意味着您编写的代码正在按其应有的方式工作。:)<代码> null =实例这不是C++
static int[] arr = new int[100];
public void setRandomIntegerArray(){
  Random randomGenerator = new Random();
  for (int i = 0; i < 100; i++){
      int randomInt = randomGenerator.nextInt(16) + 10;
      arr[i] = randomInt;
  }
}
public int[] getRandomIntegerArray(){
    return arr;
}
int[] arr = new int[100];
public void setRandomIntegerArray(){
  Random randomGenerator = new Random();
  for (int i = 0; i < 100; i++){
      int randomInt = randomGenerator.nextInt(16) + 10;
      arr[i] = randomInt;
  }
}
public int[] getRandomIntegerArray(){
    return arr;
}
public class ArrayIntGenerator {
  private int[] array;
  private ArrayIntGenerator()
  {
      this.array = new int[100];
      Random randomGenerator = new Random();
        for (int i = 0; i < 100; i++){
            int randomInt = randomGenerator.nextInt(16) + 10;
            this.array[i] = randomInt;
        }
  }
  private static ArrayIntGenerator instance = null;

  public final static ArrayIntGenerator getInstance() {
    if(null == instance) instance = new ArrayIntGenerator();
    return instance;
  }

  public int[] getArray() {
    return this.array;
  }
}