我應該創建一個Java程序讀取包含,在其他項目中的表達,括號{}, 括號[],和括號()。我的程序應適當 嵌套和「(」匹配「)」,「[」匹配「]」和「{」匹配「}」的 程序應該由「$」在輸入開始時終止線。 這些都應該是我的程序的樣品試驗:Java程序來讀取括號,大括號,括號和
Enter an Expression:
A[F + X {Y – 2}]
The expression is Legal
Enter an Expression:
B+[3 – {X/2})*19 + 2/(X – 7)
ERROR—‘]’ expected
Enter an Expression:
()) (
ERROR--‘)’ without ‘(‘
$
我創建了一個名爲BalancedExpression類和一個名爲ExpressionChecker驅動程序。 我完成了我的BalancedExpression類。但是,我無法設置自己的驅動程序打印出來使用InputStreamReader和一個BufferedReader的表達式。我唯一能弄清楚的是如何通過讓用戶輸入$來終止我的程序。
這裏是我到目前爲止的代碼:
平衡表達類:
public class BalancedExpression
{
public BalancedExpression() // Default Constructor
{
sp = 0; // the stack pointer
theStack = new int[MAX_STACK_SIZE];
}
public void push(int value) // Method to push an expression into the stack
{
if (!full())
theStack[sp++] = value;
}
public int pop() // Method to pop an expression out of the stack
{
if (!empty())
return theStack[--sp];
else
return -1;
}
public boolean full() // Method to determine if the stack is full
{
if (sp == MAX_STACK_SIZE)
return true;
else
return false;
}
public boolean empty() // Method to determine if the stack is empty
{
if (sp == 0)
return true;
else
return false;
}
public static boolean checkExpression(String ex) // Method to check Expression in stack
{
BalancedExpression stExpression = new BalancedExpression();
for(int i = 0; i< MAX_STACK_SIZE; i++)
{
char ch = ex.charAt(i);
if(ch == '(' || ch == '{' || ch == '[')
stExpression.push(ch);
else if(ch == ')' && !stExpression.empty() && stExpression.equals('('))
stExpression.pop();
else if(ch == '}' && !stExpression.empty() && stExpression.equals('{'))
stExpression.pop();
else if(ch == ']' && !stExpression.empty() && stExpression.equals('['))
stExpression.pop();
else if(ch == ')' || ch == '}' || ch == ']')
return false;
}
if(!stExpression.empty())
return false;
return true;
}
private int sp;
private int[] theStack;
private static final int MAX_STACK_SIZE = 6;
}// End of class BalancedExpression
我的驅動程序:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ExpressionChecker
{
public static void main(String[] args)
{
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader console = new BufferedReader(reader);
BalancedExpression exp = new BalancedExpression();
String expression = "";
do
{
try{
System.out.print("Enter an Expression: ");
expression = console.readLine();
if("$".equals(expression))
break;
}catch(Exception e){
System.out.println("IO error:" + e);
}
}while(!expression.equals(""));// End of while loop
}
}// End of class ExpressionChecker
任何人都可以請幫我開發的驅動程序打印出來的輸出類似於示例示例? 任何幫助表示讚賞。謝謝!
所以你需要命令行io的幫助? – dngfng
修改checkExpression方法打印出來的時候,一對托架的匹配失敗。 – nhahtdh
我無法設置我的驅動程序來打印**輸出**使用** Input ** StreamReader和BufferedReader的表達式 我無法理解這部分,您想向用戶顯示一些文本? – Gianmarco