다른 항목들 중 중괄호 {}, 대괄호 [] 및 괄호()가 포함 된 표현식을 읽는 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
사람이 날이를 출력 내 드라이버 프로그램을 개발하는 데 도움 주실 래요 샘플 예제와 비슷한 출력? 도움을 주시면 감사하겠습니다. 감사! 경우 문 checkExpression의 방법에서
그래서 명령 행 io에 도움이 필요합니까? – dngfng
대괄호 쌍이 일치하지 않을 때 인쇄하려면 checkExpression 메소드를 수정하십시오. – nhahtdh
** Input ** StreamReader 및 BufferedReader를 사용하여 표현식을 출력 ** 출력 ** 설정하는 데 문제가 있습니다. 이 부분을 이해할 수 없으며 사용자에게 몇 가지 텍스트를 표시하려고합니까? – Gianmarco