gpt4 book ai didi

java - 为什么我在此 Infix to Postfix 程序代码上收到 NullPointerException

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

我需要为调车场算法编写 Java 代码,我收到一个字符串,将其放入队列并开始评估。我得到了 Node、Stack、Queue 的类,它们应该可以正常工作。我的平衡方法是这样的...

public boolean balancear (Cola infijo) {

balance=infijo;
int balanceado=0;
char parentesis;

while (!balance.isEmpty()) {

parentesis=balance.pop();
if (parentesis=='(')
balanceado++;
else if (parentesis==')')
balanceado--;
}

return balanceado==0;
}



package expresionpolaca;
public class Postfijo {

Pila operadores = new Pila();
Cola infijo = new Cola ();
Cola postfijo = new Cola ();
Herramientas evaluador;
StringBuilder salida = new StringBuilder();
int re;

public Postfijo (String expresion) {

for (int i = 0; i < expresion.length() ; i++) {
infijo.push(expresion.charAt(i));

}

}

public String Convertir () {


evaluador.balancear(infijo); // I get NullPointerException Right HERE

if (evaluador.balancear(infijo)) { // I get NullPointerException Right HERE

while (!infijo.isEmpty()) {


char tmp=infijo.pop();
if (Character.isLetterOrDigit(tmp)) {
postfijo.push(tmp);
}

else {
switch (tmp) {

case '(':
operadores.push(tmp);
break;
case ')':

do {
tmp=operadores.pop();
if (tmp!='(') postfijo.push(tmp);
} while(tmp!='(');
operadores.pop();
break;

default:
if (operadores.sneak()=='(') operadores.push(tmp);
else while (evaluador.prioridad(tmp)>evaluador.prioridad(operadores.sneak())||operadores.sneak()!='('||operadores.isEmpty()==false) {
postfijo.push(operadores.pop());
}
break;
}

}

}

while (!operadores.isEmpty()) postfijo.push(operadores.pop());

}

else return "No balanceada";

while (!postfijo.isEmpty()) {

salida.append(postfijo.pop());
}

return salida.toString();



}

}

最佳答案

你永远不会初始化evaluador,你只是声明它。在使用之前将其初始化为适当的值。

关于java - 为什么我在此 Infix to Postfix 程序代码上收到 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12546072/

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