Java新手求助,关于数组

Aitar_XD 2018-03-15 07:58:38
初学Java想写个栈遇到点小问题


package Stack;

public class SElemType {
int ElemType;
}


package Stack;

public class Stack{
final int stackSize = 100;
private int top;
private int base;


private SElemType[] sElemType;

Stack(){
sElemType = new SElemType[stackSize];
top = 0; base = 0;
}

public boolean push(SElemType e, Stack S) {
if(S.top >= 99) {
System.out.println("OverFlow!");
return false;
}
else {
S.sElemType[top].ElemType = e.ElemType; //error
top++;
}
return true;
}

public boolean pop(SElemType e, Stack S) {
if(top == base) {
System.out.println("Stack is empty!");
return false;
}
else {
top--;
e.ElemType = S.sElemType[top].ElemType;


System.out.println("The number is " + e.ElemType);

}
return true;
}
}

package Stack;

public class test {
public static void main (String[] args) {
Stack S = new Stack();
SElemType one = new SElemType();
SElemType two = new SElemType();
SElemType three = new SElemType();
SElemType test = new SElemType();

one.ElemType = 1;
two.ElemType = 2;
three.ElemType = 3;

S.push(one, S);
S.push(two, S);
S.push(three, S);
S.pop(test, S);
S.pop(test, S);
S.pop(test, S);
} //error
}


编译通不过,提示
Exception in thread "main" java.lang.NullPointerException
at Stack.Stack.push(Stack.java:23)
at Stack.test.main(test.java:21)
(以上的错误行数是在原来的包里的行数,用注释error标识了)
求解,谢写各位大佬
...全文
226 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
考拉一枚 2018-03-15
  • 打赏
  • 举报
回复
引用 2 楼 Aitar_XD 的回复:
[quote=引用 1 楼 a1581593423 的回复:] S.sElemType[top] => top这个索引位置的对象未赋值,空对象获取成员变量抛出一个空指针异常
那要怎么修改代码呢[/quote]
public boolean push(SElemType e, Stack S) {
        if(S.top >= 99) {
            System.out.println("OverFlow!");
            return false;
        }
        else {
            S.sElemType[top] = e;  
            top++;
        }
        return true;
    }
像这样,直接让对象数组装引用呗
Aitar_XD 2018-03-15
  • 打赏
  • 举报
回复
引用 3 楼 qq_24947841 的回复:
[quote=引用 2 楼 Aitar_XD 的回复:] [quote=引用 1 楼 a1581593423 的回复:] S.sElemType[top] => top这个索引位置的对象未赋值,空对象获取成员变量抛出一个空指针异常
那要怎么修改代码呢[/quote]
public boolean push(SElemType e, Stack S) {
        if(S.top >= 99) {
            System.out.println("OverFlow!");
            return false;
        }
        else {
            S.sElemType[top] = e;  
            top++;
        }
        return true;
    }
像这样,直接让对象数组装引用呗 [/quote] 感谢
Aitar_XD 2018-03-15
  • 打赏
  • 举报
回复
引用 1 楼 a1581593423 的回复:
S.sElemType[top] => top这个索引位置的对象未赋值,空对象获取成员变量抛出一个空指针异常
那要怎么修改代码呢
a1581593423 2018-03-15
  • 打赏
  • 举报
回复
S.sElemType[top] => top这个索引位置的对象未赋值,空对象获取成员变量抛出一个空指针异常

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧