java - 每次调用方法时如何使方法中的数组不改变
问题描述
我做了一个使用随机类生成数字的方法。这些数字用于填充数组。该方法返回填充的数组。因此,我制作了一些其他数组,它们与返回的数组相等。然而,这些数组都是相同的,即使它们应该是随机的。
我尝试打印每个调用随机数组的方式,就在它调用的位置。这给了我不同的数组。但是,如果我将打印件移到所有调用下,那么数组都是一样的。另外我认为这是一个数组问题,因为我只有数组有这个问题。
public static int[] numberGenerator(int[] array) {
Random rand = new Random();
int min = 0;
int max = 0;
int x = 0;
for (int j = 0; j < array.length; j++) {
if (j == 0) {
min = 1;
max = 15;
}
if (j == 1) {
min = 16;
max = 30;
}
if (j == 2) {
min = 31;
max = 45;
}
x = rand.nextInt((max - min) + 1) + min;
array[j] = x;
}
return array;
}
public static void main(String[] args) {
int[] array = {' ', ' ', ' '};
int[] array1 = numberGenerator(array);
int[] array2 = numberGenerator(array);
System.out.println(array1[1]);
System.out.println(array2[1]);
}
}
我正在寻找不同的数组。
解决方案
您正在修改传递给该方法的数组。鉴于您无论如何都不使用数组的现有内容,最好只传递您想要的长度,并在方法中创建一个新数组:
public static int[] numberGenerator(int length) {
int[] array = new int[length];
// Rest of method as before
}
然后将您的main
方法更改为:
public static void main(String[] args) {
int[] array1 = numberGenerator(3);
int[] array2 = numberGenerator(3);
System.out.println(array1[1]);
System.out.println(array2[1]);
}
推荐阅读
- python - 在向量中存储来自 50 个图像的像素值
- c# - 在 asp.net C# 中使用 Convert.ToDateTime 转换错误
- ruby-on-rails - Rails 6 heroku 预编译资产失败
- bash - “-eq”运算符对于双括号之间的字符串比较始终为真
- python - 这段代码的输出是什么,我没有任何输出,因为我的电脑很慢
- .net - 将剃刀视图转换为 pdf 文件
- java - 在 Apache Camel 中修改 Spring Boot bean
- javascript - 更改未选择的图像的不透明度,但保持选择的图像可见
- c# - 如何编写 C# LINQ 代码以根据条件进行选择
- java - 在 Java 中显示 UTF-8 表情符号