import java.util.*; public class Analyse { public static void main(String []args) { Stack<Character> pile = new Stack<Character>(); // La chaîne à analyser (est-ce bien parenthésé ?) String s = "(({})"; // on prend les caractères de la chaîne un par un for (int i=0; i<s.length(); i++) { char c = s.charAt(i); // le caractère c est celui d'indice i if (c=='(' || c=='{') { // Si c'est une parenthèse ouvrante, on la place dans la pile pile.push(c); } else { // Si c'est une parenthèse fermante, alors il faut vérifier la correspondance // avec la dernière parenthèse de la pile char derniereParenthese = pile.pop(); // Si la fermante ne correspond pas à l'ouvrante ( --> ) et { --> } // alors c'est une erreur if (!( (c==')' && derniereParenthese=='(') || (c=='}' && derniereParenthese=='{') ) ) { System.err.println(s+" mauvais parenthésage en position "+i); System.exit(1); } } } // à la fin c'est correct si il ne reste plus de parenthèse ouvrante sans la fermante correspondante if (!pile.empty()) { System.err.println(s+" manque de parenthèses fermantes "+pile); System.exit(1); } System.out.println(s+ " est bien parenthésée"); System.exit(0); } }