Программа испытаний:очереди не производит правильный выход
public class Test
{
public static void main(String[] args)
{
String str = "1 + 4";
new MyClass(str);
}
}
Проблема Код:
import java.util.*;
public class MyClass
{
public MyClass(String str)
{
Stack<String> operators = new Stack<String>();
Queue<String> output = new LinkedList<String>();
String[] tokens = str.split("\\s");
StringBuilder postFixStr = new StringBuilder();
final String isDigit = "[0-9]";
final String isOperator = "[(^/*+\\-)]";
for (int i = 0; i < tokens.length; i++)
{
if (tokens[i].matches(isDigit))
{
output.offer(tokens[i]);
}
else if (tokens[i].matches(isOperator))
{
operators.push(tokens[i]);
}
}
output.offer(operators.pop());
for (int j = 0; j < output.size(); j++)
{
postFixStr.append(output.poll());
}
System.out.print(postFixStr.toString());
}
}
Выход:
14
Вывод должен быть:
14+
Если я изменю:
final String isDigit = "[0-9]";
To:
final String isDigit = "";
Выход:
+
Я не могу получить цифры и символы для хранения в очереди. Только тот или другой.
Это исправлено. Спасибо. – wildExploit