改变数学等式的程序错误
为什么我的程序执行的时候说我array out of bound? (我的输入是A + B, 我希望输出是A B +, 大家帮忙看看哪里出错了import java.util.EmptyStackException;
import java.util.Stack;
import *;
import java.util.Scanner;
import java.util.StringTokenizer;
public class ITP
{
public ITP()
{
}
public static String infixToPostfix(String str)
{
int i=0, j=0;
String[] input=str.split(" ");
String a="", temp="";
ArrayStack<String> S = new ArrayStack<String>();
ArrayStack<String> A = new ArrayStack<String>();
//StringTokenizer strTokenizer=new StringTokenizer(str, " ");
/*while(strTokenizer.hasMoreTokens())
{
input[i]=strTokenizer.nextToken();
i++;
}*/
while(j<input.length)
{
if(input[j]=="(")
j++;
else if(input[j]!="+" && input[j]!="-" && input[j]!="*" && input[j]!="/" && input[j]!=")")
{
S.push(input[j]);
j++;
if(input[j]=="*"||input[j]=="/")
{
A.push(input[j]);
j++;
temp=input[j];
a=S.pop();
a=a+temp;
a=a+A.pop();
}
else if(j==input.length)
{
a=a+S.pop();
a=a+A.pop();
}
}
/*else if(input[j]=="*"||input[j]=="/")
{
A.push(input[j]);
j++;
temp=input[j];
a=S.pop()
a=a+temp;
a=a+A.pop();
}*/
else if(input[j]=="+"||input[j]=="-")
{
A.push(input[j]);
j++;
}
else if(input[j]==")")
{
if(S.size()>=2)
{
temp=S.pop();
a=S.pop();
a=a+temp;
a=a+A.pop();
}
else if(S.size()<2 && !S.isEmpty())
{
a=a+S.pop();
a=a+A.pop();
}
else if(S.isEmpty())
{
i++;
}
j++;
}
}
return a;
}
}
import java.util.EmptyStackException;
import java.util.Stack;
import *;
import java.util.Scanner;
import java.util.StringTokenizer;
public class ITPtest
{
public static void main(String[] args)
{
String string, line;
string="A + B";
//String[] input=string.split(" ");
ITP a=new ITP();
line=a.infixToPostfix(string);
System.out.print(line);
}
}
[ 本帖最后由 suckdog 于 2010-11-17 15:10 编辑 ]