在java中如何将两个一维数组放入一个二维数组? [重复]

时间:2022-05-27 11:17:06

This question already has an answer here:

这个问题在这里已有答案:

Hi everyone this is my first post and I am fairly new to Java. I did search the sites for duplicates before posting this and saw a couple that were similar but not similar enough for me to come up with a working solution from.

大家好,这是我的第一篇文章,我对Java很新。在发布此内容之前,我确实在网站上搜索了重复内容,并看到了一些相似但不太相似的内容,以便我找到一个可行的解决方案。

I am trying to construct a two-dimensional array double X[][] from two one-dimensional arrays X1[] and X2[].

我试图从两个一维数组X1 []和X2 []构造一个二维数组double X [] []。

Previously in the code below is how X1[] and X2[] were initialized in line 10 and line 11 respectively:

以前在下面的代码中,X1 []和X2 []分别在第10行和第11行初始化:

double[] degree = new double[numNodes];
for (int id = 0; id < numNodes; id++){
    Vector neighbors = (Vector) netInfo.get(id);
    System.out.println(id+" "+neighbors+" "+neighbors.size() );
    degree[id] = neighbors.size();
}

double X1[] = new double[edgeList.size()];
double X2[] = new double[edgeList.size()];
double Y[] = new double[edgeList.size()]; //EBWC which is also 1-NOVER

for (int edgeIndex = 0; edgeIndex < edgeList.size(); edgeIndex++){
    String edge = (String) edgeList.get(edgeIndex);
    StringTokenizer stk = new StringTokenizer(edge);
    int uID = Integer.parseInt(stk.nextToken());
    int vID = Integer.parseInt(stk.nextToken());
    X1[edgeIndex] = degree[uID];
    X2[edgeIndex] = degree[vID];                                                                                  
    Vector uNeighbors = (Vector) netInfo.get(uID);
    Vector vNeighbors = (Vector) netInfo.get(vID);
    // finding the intersection
    Vector commonNeighbors = new Vector();
    for (int uindex = 0; uindex < uNeighbors.size(); uindex++){
        int uNeighbID = ( (Integer) uNeighbors.get(uindex) ).intValue();
        if (vNeighbors.contains(uNeighbID)) {
           commonNeighbors.add(uNeighbID);
        }
        // check if uNeighbID is in vNeighbors
        // if it is there, add uNeighbID to commonNeighbors
    }                                       
    // finding the union
    Vector AllNeighbors = (Vector) uNeighbors.clone();
    //Set<Integer> temp=new HashSet<Integer>();
    for(int vindex = 0; vindex < vNeighbors.size(); vindex++){
       //temp.add(i);
       int i = ( (Integer) vNeighbors.get(vindex) ).intValue();
       if (!AllNeighbors.contains(i))
           AllNeighbors.add(i);
    }
    double NOVER = 0;
    if (AllNeighbors.size() > 2)
       NOVER = ( (double) commonNeighbors.size() )/ (AllNeighbors.size()-2);

    Y[edgeIndex] = 1 - NOVER;

    // using the intersection and union, find EBWC scores for the edge uID-vID as 1-NOVER(uID, vID)

    // put uID vID and the EBWC score for the edge to the TreeMap EBWC
   System.out.println(edgeIndex+" "+X1[edgeIndex]+" "+X2[edgeIndex]+" "+Y[edgeIndex]);
}

However, my current problem is that the inputs is as follows:
X1 X2
0 1

但是,我目前的问题是输入如下:X1 X2 0 1

0 2

0 2

1 2

1 2

1 5

1 5

2 3

2 3

2 4

2 4

3 4

3 4

3 5

3 5

4 5

4 5

4 6

4 6

5 6

5 6

5 7

5 7

6 7

6 7

And my desired output is:

我想要的输出是:

X

X

0 1

0 1

0 2

0 2

1 2

1 2

1 5

1 5

2 3

2 3

2 4

2 4

3 4

3 4

3 5

3 5

4 5

4 5

4 6

4 6

5 6

5 6

5 7

5 7

6 7

6 7

What I tried:

我尝试了什么:

// construct the X[][] two-dim array using X1[] and X2[]

double[][] X = {X1, X2};
for (int rowIndex = 0; rowIndex < edgeList.size(); rowIndex++){
    for (int colIndex = 0; colIndex < 2(); colIndex++){
        System.out.print(X[rowIndex][colIndex]+" ");
    }
    System.out.println();
}

However it threw an exception: java.lang.ArrayIndexOutOfBoundsException: 2

但是它引发了一个异常:java.lang.ArrayIndexOutOfBoundsException:2

Any ideas, hints, or examples would be greatly appreciated. I want to learn what I am doing wrong.

任何想法,提示或示例将不胜感激。我想知道我做错了什么。

1 个解决方案

#1


1  

int[] x1 = { 1, 2, 3, 4, 5 };
        int[] x2 = { 6, 7, 8, 9, 10 };
        int[][] y = { x1, x2 };

        for(int i=0;i<y.length;i++){
            for(int k=0;k<y[i].length;k++){
                System.out.println(y[i][k]);
            }
        }

here you have a working example. this should help you with your problem

在这里你有一个有效的例子。这应该可以帮助您解决问题

#1


1  

int[] x1 = { 1, 2, 3, 4, 5 };
        int[] x2 = { 6, 7, 8, 9, 10 };
        int[][] y = { x1, x2 };

        for(int i=0;i<y.length;i++){
            for(int k=0;k<y[i].length;k++){
                System.out.println(y[i][k]);
            }
        }

here you have a working example. this should help you with your problem

在这里你有一个有效的例子。这应该可以帮助您解决问题