我的数组元素在Java中具有相同的ID?

女士M

这基本上是一个将两个稀疏矩阵相乘的程序。当我想要设置为对象创建的数组的元素时,我有一个SpEntry类型的数组(一个具有3个即时变量,int行,列,值和getter和setter方法的类)(m_1和m_2是SpArray类的实例)当我想设置每个数组的元素时,我为每个对象是一个SpEntry [] spArray,其大小为非零元素,我喜欢m_1 [0]和&m_1 [1](m_1数组的元素)具有相同的ID,因此当我设置m_1 [0]的行,行,列时,元素也被复制为m_1 [1]的行,行,列,行。

public class SpArray {
    public static int N ; //size of NxN matrix
    private SpEntry[] spArray;

    public SpArray(int nNZ){
        spArray = new SpEntry[nNZ];  //nNZ is the number of Non-Zero elements of the sparse matrix

        SpEntry init = new SpEntry(0,0,0);
        for (int s=0; s<spArray.length ; s++){
            spArray[s]= init ; 

        }

    }




    //returns the spArray
    public SpEntry[] getSpArray (){
        return this.spArray;
    }




    //returns the spArray elements
        public SpEntry getSpArray (int index){
            return this.spArray[index];
        }

这是SpArray类的一部分,并且在主程序中:

 public static void main(String[] args) {
    int nnz_1;
    int nnz_2;
    SpArray m_1;
    SpArray m_2;


    input = new Scanner (System.in);

    System.out.println("Please enter the size of your square sparse matrix: ");
    SpArray.N = input.nextInt();

    //getting the non zero elements of the 1st sparse matrix & making its sparse array

System.out.println(“请在第一个稀疏矩阵中输入非零元素的数量:”); nnz_1 = input.nextInt();

    m_1 = new SpArray (nnz_1);

    for(int j_1=0; j_1<nnz_1 ; j_1++){
    System.out.println("Enter number "+ (j_1+1) + " non-zero element of the 1st sparse matrix");
        System.out.println("row: ");
        int r_1 = input.nextInt();
        System.out.println("column: ");
        int c_1 = input.nextInt();
        System.out.println("Value: ");
        int v_1 = input.nextInt();


        /*
        SpEntry e_1 = new SpEntry (r_1, c_1, v_1);
        m_1.getSpArray()[j_1].setRow(e_1.getRow());
        m_1.getSpArray()[j_1].setCol(e_1.getCol());
        m_1.getSpArray()[j_1].setVal(e_1.getVal());
        */

        //new versiin revised
        SpEntry e_1 = new SpEntry (r_1, c_1, v_1);
        m_1.getSpArray(j_1).setRow(e_1.getRow());
        m_1.getSpArray(j_1).setCol(e_1.getCol());
        m_1.getSpArray(j_1).setVal(e_1.getVal());**

    } 

当我调试程序时,它表明m_1的数组的元素具有相同的id(和m_2的层相同):

m_1           Value: SpArray (id=21)`enter code here`
  spArray            SpEntry[2] (id=22)
    [0]              SpEntry   (id=661)
    [1]              SpEntry   (id=661)
怀疑论者

您的问题在这里:

public SpArray(int nNZ){
    spArray = new SpEntry[nNZ];  //nNZ is the number of Non-Zero elements of the sparse matrix

    SpEntry init = new SpEntry(0,0,0);       // Problem here
    for (int s=0; s<spArray.length ; s++){
        spArray[s]= init ; 

    }

}

您只创建一个对象,然后用同一对象填充整个矩阵。

如果要使对象与众不同,则需要为每个元素创建一个新对象:

public SpArray(int nNZ){
    spArray = new SpEntry[nNZ];  //nNZ is the number of Non-Zero elements of the sparse matrix

    for (int s=0; s<spArray.length ; s++){
        spArray[s]= new SpEntry(0,0,0) ; 

    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有相同类的元素ID的数组

有两个对象的数组,在这些数组中,如果ID相同,我想匹配ID。我需要具有相同ID的合并信息的新数组

numpy数组的多个元素具有相同的ID

如何在数组中存储具有相同CLASS的元素的父ID并在警报中显示这些存储的ID

如果我的数组在 React 中具有相同的 id,我如何创建一个新数组

如何比较数组中的每个元素并将具有相同数据的元素分组(在我的情况下为日期)?的JavaScript

对对象数组中具有相同值的元素求和

在C ++中创建具有相同元素多次重复的数组

从数组中删除具有相同属性值的元素

检查数组中的每个元素是否具有相同的值

在JavaScript HTML中呈现具有相同ID的多个元素

在js的数组中合并具有相同id的对象

在具有相同ID的数组中添加/求和多个值

合并数组中具有相同ID的对象

PHP:合并具有相同元素的数组

如何从数组中删除子数组中具有相同元素的所有组合?

获取具有相同类的元素的ID

删除具有相同数据 ID 的元素

识别具有相同ID的元素

具有相同ID的HTML元素

JavaScript-创建具有相同类名的所有元素ID的数组

当数组具有相同的_id时,在mongodb中的数组中组合数组

在数组中收集具有相同 id 的数组并创建具有 id 的新数组,并命名为 javascript

在具有相同类名且没有id的多个元素中获取当前元素值

合并具有相同ID的数组

PHP合并具有相同ID的数组

合并具有相同ID的数组

如何从具有相同名称的多个元素中获取单击元素,数组的不同索引索引

如何在 Julia 中测试数组中的所有元素是否具有相同的值