Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- import java.util.Stack;
- public class PuntoDos {
- Scanner scanner = new Scanner(System.in);
- public static void main(String[] args) {
- PuntoDos myapp = new PuntoDos();
- myapp.run();
- }
- boolean isOpenChar(char p)
- {
- return (p == '(' || p == '{' || p == '[');
- }
- boolean onlyParentheses(String x)
- {
- for(int i = 0; i < x.length(); i++)
- {
- if(x.charAt(i) != '(' && x.charAt(i) != '{' && x.charAt(i) != '[' && x.charAt(i) != ')' && x.charAt(i) != '}' && x.charAt(i) != ']') return false;
- }
- return true;
- }
- String forceReadParentheses()
- {
- String ret = "";
- try
- {
- System.out.println("Introduzca parentización:");
- while(!onlyParentheses(ret = scanner.next())) System.out.println("Introduzca parentización:");
- }
- catch(Exception ex)
- {
- System.out.println("Error en la carga de la parentización, reintente.");
- }
- return ret;
- }
- void run()
- {
- try
- {
- String parentheses = forceReadParentheses();
- System.out.println(checkParentheses(parentheses) ? "Bien parentizado." : "Mal parentizado.");
- }catch (Exception e) {
- System.out.println("Error durante la carga.");
- }
- }
- boolean isBalanced(char p, char n)
- {
- return (p == '(' && n ==')') || (p == '[' && n ==']') || (p == '{' && n =='}');
- }
- boolean checkParentheses(String parentheses)
- {
- Stack<Character> piv = new Stack<Character>();
- for(int i = 0; i < parentheses.length(); i++)
- {
- char n = parentheses.charAt(i);
- if(isOpenChar(n)) piv.add(n);
- else
- {
- char outChar;
- if(!piv.isEmpty()) outChar = piv.pop();
- else return false;
- if(!isBalanced(outChar, n)) return false;
- }
- }
- return piv.isEmpty();
- }
- }
Add Comment
Please, Sign In to add comment