gpt4 book ai didi

java - 类数组覆盖

转载 作者:行者123 更新时间:2023-12-02 04:02:07 26 4
gpt4 key购买 nike

当我制作类数组时,前一个类的每个元素都会被下一个类元素覆盖。

这就是我的课:

public class Perceptron2 {

public double prog=0.01;
public double wagi[]=new double[35];
public double blad;
public double stala=0.001;
public Perceptron2(double prog, double[] wagi, double blad) {
this.prog = prog;
this.wagi = wagi;
this.blad = blad;
stala=0.001;
}
public double getProg() {
return prog;
}
public void setProg(double prog) {
this.prog = prog;
}

public double[] getWagi() {
return wagi;
}

public void setWagi(double[] wagi) {
this.wagi = wagi;
}

public double getBlad() {
return blad;
}

public void setBlad(double blad) {
this.blad = blad;
}

public double getStala() {
return stala;
}

public void setStala(double stala) {
this.stala = stala;
}

}

以及以下代码

public class runn {
public static void main(String[] args) {
Random random = new Random();
double [] wagi = new double[35];
double prog = 0.01;
Perceptron2[] p = new Perceptron2[10];
System.out.println(p.length);
for (int i=0;i<p.length;i++)
{
for(int j=0; j<35; j++)
{
wagi[j]=random.nextDouble()*0.1;
}
System.out.println(i+" "+wagi[1]);
p[i] = new Perceptron2 (prog, wagi , 0.01);
}
System.out.println(p[3].wagi[1]);
System.out.println(p[4].wagi[1]);
}
}

例如 p[3].wagi[1] 和 p[4].wagi[1] 相等。如何让它们与众不同?

最佳答案

对象(包括数组)在 Java 中作为指针传递,而不是作为其内容的副本传递。

您需要为外循环的每次迭代创建一个新的 wagi 实例。

事实上,您将相同的 wagi 填充到每个 Perceptron2 中(我从未想过我会写另一句话)。

所以要么

for (int i=0;i<p.length;i++){
double [] wagi = new double[35];
for(int j=0; j<35; j++) {

或者在 Perceptron2 构造函数中创建数组的防御性副本:

this.wagi = Arrays.copyOf(wagi, wagi.length);

关于java - 类数组覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34787146/

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