Вот мой код для преобразования инфикса в выражение posfix. Проблема заключается в методе преобразования. Я получаю ошибку на линии 21.JAVA-Why/Где я получаю индекс массива из связанной ошибки, пытаясь скрывать инфикс, чтобы опубликовать исправление?
Error-Ab + Исключение в потоке "главный" java.lang.ArrayIndexOutOfBoundsException: 3> = 0
в java.util.Vector.elementAt (Unknown Source)
в infixpostfix.conversion (infixpostfix.java:22)
в infixpostfix.main (infixpostfix.java:77)
для текущего входного сигнала.
Я думаю, что эта ошибка появляется, потому что я пытаюсь получить доступ к i
, когда она превышает длину моей строки. Но как это возможно, когда значение my i регулируется циклом for?
Code:-
import java.util.Stack;
public class infixpostfix {
Stack<Character> st = new Stack<Character>();
void conversion(String e){
for(int i = 0 ; i < e.length() ; i++){
if(isOp(e.charAt(i))){
if(st.isEmpty()){
st.push(e.charAt(i));
}
else{
while(!st.isEmpty() && checkPrec(st.peek())<=checkPrec(e.charAt(i))){
System.out.println(st.pop());
}
st.push(st.elementAt(i));
}
}
else{
System.out.print(e.charAt(i));
}
}
while(!st.isEmpty()){
System.out.print(st.pop());
}
}
int checkPrec(char o){
switch(o){
case '+':
case '-':
return 1;
case '*':
case '/':
return 2;
default:
return -1;
}
}
boolean isOp(char c){
if(c=='+' || c=='-' || c=='/' || c=='*'){
return true;
}
else{
return false;
}
}
public static void main(String args[]){
infixpostfix obj = new infixpostfix();
obj.conversion("a+b-c/d*f");
}
}
'st.push (st.elementAt (i));' - что вы пытаетесь сделать здесь? – GurV