gpt4 book ai didi

java - 线程 "main"java.lang.NullPointerException 虚拟堆栈类中出现异常

转载 作者:行者123 更新时间:2023-12-02 06:00:19 24 4
gpt4 key购买 nike

我尝试使用此类来计算后缀表达式,并且在测试时在虚拟堆栈应推送的第 32 行抛出此异常。

public class PostfixEval
{
private IntStack s;

public PostfixEval()
{
IntStack s = new IntStack();
}

public boolean isInteger(String s)
{
int i = 0;
boolean isDigit = true;

while(i < s.length() && isDigit)
{
isDigit = s.charAt(i) >= '0' && s.charAt(i) <= '9';
i++;
}
return isDigit;
}

public int eval(String e)
{
String[] tokens = e.split("\\s+");


for(int i=0; i<tokens.length; i++)
{
if(isInteger(tokens[i]))
{
s.push(Integer.parseInt(tokens[i]));
}
else
{
int a,b,c;

b = s.pop();
a = s.pop();
c = 0;

char d = tokens[i].charAt(0);
if(d == '+')
{
c = a + b;
}
else if(d == '-')
{
c = a - b;
}
else if(d == '*')
{
c = a*b;
}
else if(d == '/')
{
c = a/b;
}
else if(d == '%')
{
c = a%b;
}
else
{
System.out.println("Error");
System.exit(0);
}
s.push(c);

}
}
return s.peek();

}
}

我使用 jgrasp 来查看 Integer.parseInt(tokens[i])) 的计算结果并确认它是分割字符串中的数字。当尝试将我输入的数字推送到推送方法的参数中时,它可以工作,那么为什么在使用 PostfixEval 推送时会出现 null 异常?

这是我的堆栈类。

public class IntStack implements StackIntADT
{
// fields
private int[] stk;
private int sp;
// constructors
public IntStack()
{
sp = -1;
stk = new int[10];
}

public IntStack( int s )
{
sp = -1;
stk = new int[s];
}

// stack class methods

public void push(int element)
{
if(!isFull())
{
sp++;
stk[sp]=element;
}
else
{
System.out.println("Element" + element);
System.exit(0);
}

}
public int pop()
{
int rv = 0;
if(!isEmpty())
{
rv = stk[sp--];
}
else
{
System.out.println(rv);
System.exit(0);
}
return rv;
}
public int peek()
{
return stk[sp];
}
public boolean isEmpty()
{
return sp==-1;
}
public boolean isFull()
{
return sp==stk.length-1;
}
public int size()
{
return stk.length;
}
public String toString()
{
String s = "";
for(int x=0;x<10;x++)
{
s = s + " " + stk[x];
}
return s;
}
}

最佳答案

构造函数不应该定义局部变量(它隐藏了同名的成员变量)。成员变量从未被赋值。

将构造函数更改为:

public PostfixEval() {
s = new IntStack();
}

关于java - 线程 "main"java.lang.NullPointerException 虚拟堆栈类中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22725612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com