Sha*_*keR 0 java stack character nullpointerexception
我正在实现一个带有两个堆栈的字符缓冲区.我用insert()方法插入一个元素:
class Buffer
{
private Stack<Character> stackLeft;
private Stack<Character> stackRight;
private int size;
Buffer()
{
Stack<Character> stackLeft = new Stack<Character>();
Stack<Character> stackRight = new Stack<Character>();
size = 0;
}
public void insert(char c)
{
size ++;
stackLeft.push(c); //This line returns NullPointerException
}
}
Run Code Online (Sandbox Code Playgroud)
每次尝试推送c字符变量时,它都会抛出Null指针异常.这是我从main调用它的方式:
public static void main(String[] args)
{
Buffer tb = new Buffer();
Character ch = new Character('a');
tb.insert(ch);
tb.insert(new Character('a'));
tb.insert('a');
}
Run Code Online (Sandbox Code Playgroud)
所有这些都返回null异常.断言Character到达方法内部很好.我用过java.util.Stack; 当它失败时,我实现了自己的.但它仍然失败了.
我能做错什么?
任何形式的帮助表示赞赏!
在构造函数中使用以下行:
Stack<Character> stackLeft = new Stack<Character>();
Stack<Character> stackRight = new Stack<Character>();
Run Code Online (Sandbox Code Playgroud)
你创建了一个名为一样的实例变量局部变量,所以你没有初始化实例变量stackLeft和stackRight,所以Java初始化它们null.
删除类型,以便名称将解析为实例变量.
stackLeft = new Stack<Character>();
stackRight = new Stack<Character>();
Run Code Online (Sandbox Code Playgroud)