java - 如何访问在 Java 中用作对象属性的数组?
问题描述
我创建了一个具有数组属性的类。我还创建了一个对象数组。我想知道如何调用访问特定对象的数组元素?
课程是:
public class node
{
public int node_num;
public int total_weight;
public int[] neighbors;
node(int num, int weight,int neigh[])
{
this.node_num = num; //node number
this.total_weight = weight; //row total
this.neighbors=neigh; //adjacent nodes
}
}
我的主要功能是:
public static void main(String[] args)
{
int n=5;
int temp1,temp2;
int adj_mat[][]= {{0,4,0,0,10},{4,0,6,2,0},{0,6,0,4,0},{0,2,4,0,0},{10,0,0,0,0}}; //populating the weighted adjacency matrix
int i=0, j=0;
int n1[]=new int[n];
cluster cluster1=new cluster();
node nodes[] = new node[n];
for (i = 0; i < n; i++)
{
int sum=0,k=0;
for (j = 0; j < n; j++)
{
if(adj_mat[i][j]!=0)
{
sum= sum+adj_mat[i][j];
n1[k]=j+1;
k=k+1;
}
else
{
n1[k]=0;
k=k+1;
}
}
nodes[i]=cluster1.new node(i+1,sum,n1);
}
int m;
for(i=0;i<n;i++)
{
System.out.print("\nNeighbor of "+nodes[i].node_num +" is ");
for(m=0;m<5;m++)
{
System.out.print(nodes[i].neighbors[m]+",");
}
}
预期的输出是:
Neighbor of 1 is 0,2,0,0,5,
Neighbor of 2 is 1,0,3,4,0,
Neighbor of 3 is 0,2,0,4,0,
Neighbor of 4 is 0,2,3,0,0,
Neighbor of 5 is 1,0,0,0,0,
当前输出为:
Neighbor of 1 is 1,0,0,0,0,
Neighbor of 2 is 1,0,0,0,0,
Neighbor of 3 is 1,0,0,0,0,
Neighbor of 4 is 1,0,0,0,0,
Neighbor of 5 is 1,0,0,0,0,
解决方案
看看你的预期输出:最后一个元素是Neighbor of 5 is 1,0,0,0,0,
然后看看你创建数组的位置:它在循环之外。
因此,在您调用的循环中,所有new node(i+1,sum,n1)
n1
节点都引用相同的数组,即您覆盖所有迭代中的元素,最后的值是最后一个节点的值。n1
要修复int n1[]=new int[n];
在创建节点的循环内移动线:
for (i = 0; i < n; i++) {
//create a NEW array
int n1[]=new int[n];
//calculate n1, yada, yada, yada
//create a new node with the new array
nodes[i]=cluster1.new node(i+1,sum,n1);
}
推荐阅读
- prettier - 当我不希望它时,更漂亮地格式化一个 Vue 组件
- docker - dotnetcoresdk 容器中的“dotnet publish”命令生成没有详细信息的 EXE
- r - R,stringr,mutate(我认为) - 多个字符串中的多个部分字符串替换
- django - 尽管有 DEBUG = False,但看到 Django 调试 404 页面
- python - 如何从数据框中删除重复记录?
- javascript - JQuery附加图像未显示
- javascript - 具有提交输入类型的 window.open createElement('form') 未调用操作
- python - 为什么历史存储 auc 和 val_auc 具有递增整数(auc_2,auc_4,...)?
- c# - WCF ServiceHost 上的多个服务器证书
- css - 缩放背景图片与背景尺寸封面