【发布时间】:2014-12-18 00:56:14
【问题描述】:
这段代码如何在 push 和 main 中产生 NullPointerException: 代码如下:
class Stack {
private char ch[];
private int top;
Stack(int n) {
char ch[] = new char[n];
top = -1;
}
void push(char c) {
if (top == ch.length - 1) {
System.out.println("Stack full.");
return;
}
top++;
ch[top] = c;
}
char pop() {
if (isEmpty()) {
System.out.println("Stack empty");
return (char) 0;
}
char p;
p = ch[top];
top--;
return p;
}
boolean isEmpty() {
if (top == -1)
return true;
else
return false;
}
}
class StackDemo {
public static void main(String args[]) {
final int size = 10;
Stack s = new Stack(size);
// Push charecters into the stack
for (int i = 0; i < size; i++) {
s.push((char) ((int) 'A' + i));
}
// pop the stack untill its empty
for (int i = size - 1; i >= 0; i--) {
System.out.println("Poped element " + i + " is " + s.pop());
}
}
}
生成的错误码是:
0StackDemo.main(StackDemo.java:46) 的 Stack.push(StackDemo.java:11) 的线程“main”java.lang.NullPointerException 中的异常
我是否必须将这些类放在一个包中,因为 java 中已经有一个 Stack 库?
【问题讨论】:
标签: java nullpointerexception stack runtime-error