如何将这段代码中的字符转换为字符串?InfixToPostfix必须能够接受字符串而不是字符,因此它可以接受双位数和空格。有什么建议吗?提前谢谢。
import java.util.Stack;
public class InfixToPostfix
{
private Stack operators = new Stack();
public InfixToPostfix()
{
}
public String toPostfix(String infix)
{
char[] characters = new char[100];
int i;
int length = infix.length();
infix.getChars(0, length, characters, 0);
char operator;
String output = "";
for (i = 0; i < length; i++)
{
if (isOperator(characters[i]))
if (operators.empty())
operators.push(characters[i]);
else
{
if (operatorLessPrecedence(characters[i]))
{
do
{
output = output + operators.pop();
}
while (!operators.empty() && operatorLessPrecedence(characters[i]));
operators.push(characters[i]);
}
else
operators.push(characters[i]);
}
else
output = output + characters[i];
}
while (!operators.empty())
{
operator = (char)operators.pop();
output = output + operator;
}
return output;
}
/**
* operator
*/
public boolean isOperator(char c)
{
if ( c == '*' ||
c == '/' ||
c == '+' ||
c == '^' ||
c == '-')
return true;
else
return false;
}
public boolean operatorLessPrecedence(char o)
{
int operatorPrecedence = precedence(o);
int tosPrecedence = precedence((char)operators.peek());
return (operatorPrecedence <= tosPrecedence);
}
/**
* precedence
*/
public int precedence(char o)
{
switch (o)
{
case '+': return 1;
case '-': return 1;
case '*': return 2;
case '/': return 2;
case '^': return 3;
}
return 5;
}
}
我将使用词法分析阶段将代码分成两部分,词法分析阶段将输入分成一组令牌。然后将它们传递给分流场算法,该算法使用令牌数组。在词法分析阶段,可以使用正则表达式检测不同类型的输入。例如/d+/检测一个或多个数字的序列。