Tem um exemplo de um livro, que não entendi como se faz, ele está meio confuso para mim que estou começando em java…tem como deixar ele mais acessivel ou mais claro para um iniciante??
Ele tem que fazer a verificação dos delimitadores de expressões que serão digitadas pelo usuario,Determine uma flag de saida de leitura para as expressões. Serão aceitos delimitadores validos {} [] ().Sendo que para cada delimitador de abertura devera ter um de saida correspondente.
[code]import java.io.*; // for I/O
class StackX
{
private int maxSize;
private char[] stackArray;
private int top;
//--------------------------------------------------------------
public StackX(int s)
{
maxSize = s;
stackArray = new char[maxSize];
top = -1;
}
//--------------------------------------------------------------
public void push(char j)
{
stackArray[++top] = j;
}
//--------------------------------------------------------------
public char pop()
{
return stackArray[top–];
}
//--------------------------------------------------------------
public char peek()
{
return stackArray[top];
}
//--------------------------------------------------------------
public boolean isEmpty()
{
return (top == -1);
}
//--------------------------------------------------------------
}
class BracketChecker
{
private String input;
//--------------------------------------------------------------
public BracketChecker(String in)
{ input = in; }
//--------------------------------------------------------------
public void check()
{
int stackSize = input.length();
StackX theStack = new StackX(stackSize);
for(int j=0; j<input.length(); j++)
char ch = input.charAt(j);
switch(ch)
{
case '{':
case '[':
case '(':
theStack.push(ch);
break;
case '}':
case ']':
case ')':
if( !theStack.isEmpty() )
{
char chx = theStack.pop();
if( (ch=='}' && chx!='{') ||
(ch==']' && chx!='[') ||
(ch==')' && chx!='(') )
System.out.println("Error: "+ch+" em "+j);
}
else
System.out.println("Erro: "+ch+" at "+j);
break;
default:
break;
}
}
if( !theStack.isEmpty() )
System.out.println("Erro: falta delimitador direito");
}
//--------------------------------------------------------------
}
////////////////////////////////////////////////////////////////
class BracketsApp
{
public static void main(String[] args) throws IOException
{
String input;
while(true)
{
System.out.print(
“Enter string contendo delimitadores: “);
System.out.flush();
input = getString();
if( input.equals(””) )
break;
BracketChecker theChecker = new BracketChecker(input);
theChecker.check();
}
}
//--------------------------------------------------------------
public static String getString() throws IOException
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = br.readLine();
return s;
}
//--------------------------------------------------------------
}
[/code]