PDA

View Full Version : [JAVA] e correttezza espressioni matematiche


licky79
25-10-2004, 12:24
Dovrei scrivere una funzione java (utilizzando TDA stack), che mi controlla la correttezza delle espressioni matematiche che usano le parentesi () e [].

Mi deve restituire TRUE se le parentesi sono annidate correttamente e FALSE al contrario.

ESEMPIO:

([5+3)]
//FALSE perchè le parentesi non sono annidate correttamente

(5+2)-1
//FALSE perchè le parentesi non sono annidate correttamente

(6+2
//FALSE perchè le parentesi non sono annidate correttamente

(abc[bla]piripa(123[456])+++)-()
//TRUE perchè le parentesi sono annidate correttamente

Spero di essere stato chiaro.

Esperti programmatori JAVA mi aiutate???

Grazie.

Blackat
25-10-2004, 15:27
TDA = Tipo di Dato Astratto, giusto ???

Comunque...penso che il codice del metodo per
far quello che vuoi tu è :

import java.util.*;

...


public boolean controllaParentesi(String espressione) {


}

Blackat
25-10-2004, 15:36
Scusate per prima ma ho sbagliato ed è partito il post!!! :P
Dicevo...
TDA = Tipo di Dato Astratto, giusto ???

Comunque...penso che il codice del metodo per
far quello che vuoi tu è :

import java.util.*;

...


public boolean controllaParentesi(String espressione) {

int l = espressione.lenght();
int i;
char c;
Stack s = new Stack();
for ( i = 0; i < l; i++) {
c = espressione.charAt(i);
if ( c == '(' || c == '[' )
s.push(new String(c));
if ( (c == ')' || c == ']') && !s.empty()) {
String p = (String) s.peek();
String cc = new String(c);
if ( p == c ) s.pop();
}
}

return s.empty();
}


L'ho scritto alla cieca senza provarlo.
Fammi sapere se ci sono errori.

Ciao