gpt4 book ai didi

java - 在制作一个n的随机整数倍数的数组时,程序任意修改一个数组

转载 作者:行者123 更新时间:2023-11-29 07:37:38 24 4
gpt4 key购买 nike

    public class Tester {
public static int randomInt(int low, int high){//this method finds a random integer in between the range of low and high.
return (int)(Math.random()*(high-low)+low);
}
public static int[] randomArray(int[] a){//this method enters those random integers into an array of 100 length.
for(int i = 0;i<a.length; i++){
a[i] = randomInt(0, 100);
}
return a;
}
public static int[] multiple(int[] a, int n){//this method replaces the input array with a new array consisting of (random) multiples of n
int[] x = new int[100];
for(int i = 0; i<a.length; i++){
x[i] = randomArray(a)[i]*n;
}
return x;
}
public static void list(int[] ints){//this method lists(prints) each indexes in the array in a i(index):ints[i](the random value) format.
for(int i = 0; i<ints.length; i++){
System.out.println(i+":"+ints[i]);
}
}
public static void main(String[] args) {
int[] a = new int[100];
list(a);// this will yield 1~99:0 since the indexes in the array weren't assigned any values.
}

}

然而......

public static void main(String[] args) {
int[] a = new int[100];
int[] b = multiple(a, 2);
list(a);//this would instead give me a list of random numbers(0~99:random value) that are not even multiples of 2.

这没有意义,因为 multiple() 方法不应该修改 int[] a 的值。数组 a 的长度为 100,每个索引中的默认值为 0。然后,数组 a 直接进入 list() 方法,它不应该被 multiple() 改变。 multiple() 给出的新数组存储在数组b 中。为什么会这样?

最佳答案

多次 调用randomArray,后者依次修改作为参数传递的数组:

a[i] = randomInt(0, 100);

解决此问题的一种方法是完全删除此方法,因为无论如何您总是访问数组的单个成员,而只需直接调用 randomInt:

public static int[] multiple(int[] a, int n){
int[] x = new int[100];
for(int i = 0; i < a.length; i++) {
x[i] = randomInt(0, 100) * n; // Here
}
return x;
}

关于java - 在制作一个n的随机整数倍数的数组时,程序任意修改一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33716261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com