Java 实例变量数组大小基于另一个实例变量

Posted

技术标签:

【中文标题】Java 实例变量数组大小基于另一个实例变量【英文标题】:Java instance variable array size based on another instance variable 【发布时间】:2021-11-03 23:20:49 【问题描述】:

我正在尝试创建一个将数组作为实例变量的图形类,但该数组的大小取决于另一个将在构造函数中初始化的实例变量。这是一个简单的例子:

public class Graph 
//Number of Vertices and Edges:
private int V;
private int E;
//Visited/Unvisited list:
private int[] visitedList = new int[V];

//Constructor:
public Graph(int V)
        this.V = V;
        this.E = 0;
        for (int i = 0; i < V; i++)  //Initialize all vertices as 0
            visitedList[i] = 0;
        

如您所见,visitedList 的大小将取决于我们通过构造函数初始化的变量 V。但是,当我在获取 V 的值后尝试初始化visitedList 时,构造函数内部出现错误。 0?或者我是否需要在构造函数之外使用另一种可能初始化visitedList的方法来做它?欢迎任何帮助,谢谢!

【问题讨论】:

只需将visitedList的初始化移动到你的构造函数中。 并且int[]自动初始化为0 【参考方案1】:

您当前在构造函数中的其他语句运行之前 之前构造数组。你需要改变它

private int[] visitedList; // V is 0 at this point.

//Constructor:
public Graph(int V)
        this.V = V;
        this.E = 0;
        this.visitedList = new int[V];
        // default initial value in an int[] **is** zero.

【讨论】:

以上是关于Java 实例变量数组大小基于另一个实例变量的主要内容,如果未能解决你的问题,请参考以下文章

在Java程序设计中实例变量和类变量有啥区别?

我应该如何在 Java 中初始化一个复杂的实例变量?

类变量和实例变量及其初始化

将从@escaping接收的值分配给swift中另一个类中的实例变量

java中,变量副本是啥,在哪里存的啊,怎么查看?

unity脚本中变量在另一个脚本如何调用