我製作了一個轉換器,它將中綴表達式轉換爲後綴表達式。將中綴表達式轉換爲後綴表達式 - 無效空間插入
Example:
Infix: 2 * 3 - 10/4
Postfix: 2 3 * 10 4/-
我有一個方法完全編碼,但它返回的後綴表達式是
2 3 * 1 0 4/-
有兩個問題:1,主要問題是,他們是在1和之間的空間0,他們應該在一起時(10)。 2.有很多額外的空間,輸出應該看起來像上面提供的例子。
我已經完成了從infix到postfix的轉換研究,但我無法確定如何做更多的單個數字表達式轉換。
下面是附加到我的postfixtoinfix類,表達式變量包含在上面的示例中指示的中綴與完美的間距。
import java.util.*;
public class InfixToPostfix
{
//Declare Instance Variables
private String expression;
private Stack<Character> stack = new Stack<Character>();
//Constructor
public InfixToPostfix(String infixExpression)
{
expression = infixExpression;
}//End of constructor
//Translate's the expression to postfix
public String translate()
{
//Declare Method Variables
String input = "";
String output = "";
char character = ' ';
char nextCharacter = ' ';
for(int x = 0; x < expression.length(); x++)
{
character = expression.charAt(x);
if(isOperator(character))
{
while(!stack.empty() && precedence(stack.peek())>= precedence(character))
output += stack.pop() + " ";
stack.push(character);
}
else if(character == '(')
{
stack.push(character);
}
else if(character == ')')
{
while(!stack.peek().equals('('))
output += stack.pop() + " ";
stack.pop();
}
else
{
if(Character.isDigit(character) && (x + 1) < expression.length() && Character.isDigit(expression.charAt(x+1)))
{
output += character;
}
else if(Character.isDigit(character))
{
output += character + " ";
}
else
{
output += character;
}
}
}//End of for
while(!stack.empty())
{
output += stack.pop() + " ";
}
return output;
}//End of translate method
//Check priority on characters
public static int precedence(char operator)
{
if(operator == '+' || operator =='-')
return 1;
else if(operator == '*' || operator == '/')
return 2;
else
return 0;
}//End of priority method
public boolean isOperator(char element)
{
if(element == '*' || element == '-' || element == '/' || element == '+')
return true;
else
return false;
}//End of isOperator method
}//End of class
請不要在問題標題中加上「請幫助緊急」。謝謝。 –
有沒有人討論過與它沒有關係的作業? – jahroy
不,因爲如果它不是作業,我不會在這裏發佈關於它的事情,因爲我會有更多的時間來獨立地確定什麼是錯的。 – Singh