Java 实例变量数组大小基于另一个实例变量
Java instance variable array size based on another instance variable
我正在尝试制作一个图 class,它有一个数组作为实例变量,但是这个数组的大小取决于另一个实例变量,该实例变量将在构造函数中初始化。这是一个简单的例子:
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.
}
我正在尝试制作一个图 class,它有一个数组作为实例变量,但是这个数组的大小取决于另一个实例变量,该实例变量将在构造函数中初始化。这是一个简单的例子:
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.
}