如何在运行时传递数组的大小



我认为下面的代码片段可能会运行。

public class Stack {
int n;
char arr[]=new char[n];
int top=0;
void Push(char val) {
arr[top]=val;
top++;   
}
}
class Solution {
public static void main(String[] args) {
Stack obj=new Stack();
obj.n=5;
obj.Push('a');
obj.Push('a');
obj.Push('a');
obj.Push('a');
}
}

然而,它给出了一个CCD_ 1。为什么数组的大小不改为5?

为堆栈使用构造函数。默认情况下,n值设置为零。因此,创建的数组大小为0。像下面这样的参数化构造函数应该为您完成这项工作。

public class Stack {
int n;
char arr[];
int top=0;
public Stack(int n) {
this.n = n;
this.arr = new char[n];
}
}

最新更新