当前位置: 首页 > 知识库问答 >
问题:

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

郑博
2023-03-14
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];
        }
 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
    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           Value: SpArray (id=21)`enter code here`
  spArray            SpEntry[2] (id=22)
    [0]              SpEntry   (id=661)
    [1]              SpEntry   (id=661)

共有1个答案

云凌
2023-03-14

你的问题就在这里:

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 ; 

    }

}

您只创建一个对象,并用同一个对象填充整个matrx。

如果希望对象是不同的,则需要为每个元素创建一个新对象:

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) ; 

    }

}
 类似资料:
  • 我想给数组的每个元素添加相同的值。我的方法是使用default添加值。它与这个有一点不同,因为:我不知道如何写入数组的现有元素,而不是新元素。 输入: 提前感谢!

  • 问题 你想从数组中删除相同元素。 解决方案 Array::unique = -> output = {} output[@[key]] = @[key] for key in [0...@length] value for key, value of output [1,1,2,2,2,3,4,5,6,6,6,"a","a","b","d","b","c"].unique() # =

  • 我有一个单词流,我想根据相同元素的出现对它们进行排序。 例如:{hello,world,hello} 至 你好,{你好,你好} 谢谢你

  • 我有一个练习,找出出了什么问题。我会感激的帮助:) 编写将具有两个int类型数组和更大的返回数组(如果两个数组中的一个更大)以及与数组相同位置的元素的总和的代码。

  • 我有下面的xml结构: 有不同的 Field(X) 包装器元素,它们包含相同的用户元素。XML 中可以发送 n 个字段。因此,我不能为每个单独的Jaxb。我需要访问用户,但在取消编组步骤后忽略 Field 元素。不幸的是,我无权更改xml结构。我无法找到解决方案。任何指针都会有所帮助。

  • 问题内容: Swift中是否有一个函数可以检查数组的所有元素是否具有相同的值?就我而言,它是一个type数组。我知道我可以使用一个简单的for循环对其进行迭代,我只是想知道是否内置了某些东西并且速度更快。 问题答案: 任何方法都必须遍历所有元素,直到找到另一个元素: 可以使用以下函数来代替显式循环: 如果数组元素是(例如),则可以从数组元素创建一个(从Swift 1.2开始可用),并检查它是否恰好