Stack<String> s = new Stack<String>();
String[] tokens = infix.split(" ");
StringBuilder output = new StringBuilder();
Integer.getInteger("+", 1);
Integer.getInteger("-", 1);
Integer.getInteger("*", 2);
Integer.getInteger("/", 2);
for (int i = 0; i < tokens.length; i++)
{
if (tokens[i].matches("[0-9]"))
{
output.append(tokens[i] + " ");
}
else if (tokens[i].equals("+") || tokens[i].equals("-") || tokens[i].equals("*") || tokens[i].equals("/"))
{
if(tokens[i] <= s.peek())
{
}
}
}
return output.toString();
我正在使用后缀到后缀计算器,我试图说明当前令牌值是否小于或等于堆栈顶部令牌的值。我使用Integer.valueOf将数值设置为特定标记,但不能使用&#34;&lt; =&#34;因为它们是字符串,我是否需要使用String.greaterThan()[虚构]方法?
答案 0 :(得分:0)
if (tokens[i].equals("-") || tokens[i].equals("+") || tokens[i].equals(s.peek))
这会执行您尝试做的事情,尽管它可能不是咸味的。
我会坚持使用if语句并忘记分配权重,但如果你坚持,下面的内容将有效。
另一个选择是将每个运算符映射到数值,如果您需要为运算符赋予数值:
HashMap<String, Integer> operators = new HashMap<String, Integer>();
operators.put("+", 1);
operators.put("-", 1);
operators.put("*", 2);
operators.put("/", 2);