java - Java 实例变量数组大小基于另一个实例变量
问题描述
我正在尝试创建一个将数组作为实例变量的图形类,但该数组的大小取决于另一个将在构造函数中初始化的实例变量。这是一个简单的例子:
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 时,在构造函数内部出现错误。是否有适当的方法来初始化数组visitedList 以使大小跟随V 并且我可以将所有元素初始化为0?或者我是否需要在构造函数之外使用另一种可能初始化visitedList的方法来做它?欢迎任何帮助,谢谢!
解决方案
您当前在构造函数中的其他语句运行之前构造数组。你需要改变它
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.
}
推荐阅读
- ios - 从 Mac Catalyst 应用程序打开另一个 Mac 应用程序
- javascript - 如果没有设置超时,我怎么能做到这一点?
- python - 将 2D numpy 数组转换为 1D 字符串
- java - classcastexception 越来越像整数无法转换 java.lang.string
- ios - iOS WKWebview:始终允许相机权限
- python - 在 Python 脚本中输入逗号分隔值
- java - flutter 中的贬值错误?C:\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.20.0+1\android\src\main\java\io\flutter\plugins
- javascript - 删除输入行后如何在javascript中计算价格?
- python - 使用索引 Pandas 替换选定的单元格
- reactjs - 只点击不透明部分 svg img