Bonjour,

J'essaie de faire un programme qui vérifie qu'une expression est bien parenthésée.
J'ai pas d'erreurs à la compilation ni à l'exécution. Mais il ne fonctionne pas correctement: toutes les expressions tapées son considérées comme bien parenthésées...
Je vous envoie mon code ci-dessous, quelque pourrait m'aider? Je vois pas d'où vient le problème.

Merci beaucoup d'avance.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
public interface Stack 
{
	public Object push(int i);
	public Object pop();
	public boolean isEmpty();
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
 
 
class PileArray implements Stack 
{
	Object[] pile;
	int debut;
 
	public PileArray() 
	{
		pile= new Object[100];
		debut=-1;
	}
 
 
	public boolean isEmpty() 
	{
		return debut == -1;
	}
 
 
	public Object push(int item) 
	{
		if (debut==pile.length-1)  
		{
			pile[++debut] = item;
		}
 
		return item;
	} 
 
 
	public Object pop() 
	{
 
		if(!isEmpty())
		{
			debut--;
		}
 
		return pile[debut];
	}
}

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
 
 
import java.io.*;
 
   public class Parenthesage 
   {
 
     public static boolean verifiParen(String s) 
    {
       PileArray stack = new PileArray ();     
 
       for (int i = 0; i < s.length()-1; i++) 
	{
		switch (s.charAt(i)) 
		{
			case '(':
					stack.push(new Character ('('));
			break;
			case '[':
					stack.push(new Character ('['));
			break;
 
			case '{':
					stack.push(new Character ('{'));
 
			break;
			case ')':
					Character c = (Character) stack.pop();
					if (!match(c.charValue(), s.charAt(i))) return false;
			break;
			case ']':
 
					c = (Character) stack.pop();
					if (!match(c.charValue(), s.charAt(i))) return false;
			break;
			case '}':
					c = (Character) stack.pop();
					if (!match(c.charValue(), s.charAt(i))) return false;
			break;
			default:
			break;
		}
       }
 
       if ( stack.isEmpty())
		return true;
	else 
		return false ;
 
     }
 
 
     public static boolean match(char lpar, char rpar) {
       switch (lpar) {
       case '(': return rpar == ')';
       case '[': return rpar == ']';
       case '{': return rpar == '}';
       default: return false;
       }
     }
 
 
     public static void main(String[] args) throws IOException 
     {
	BufferedReader stdr;  
	stdr = new BufferedReader(new InputStreamReader(System.in));
 
	String line = stdr.readLine();   
	while (line != null) {
         if (verifiParen(line))
           System.out.println("well parenthesized");
         else
           System.out.println("parenthesis mismatch");
 
         line = stdr.readLine();   
       }
     }
   }