Ragazzi sto letteralmente impazzendo con questo programma che dovrebbe creare una calcolatrice(ancora non è evoluto infatti non ho scritto codice per assegnare le priorità degli operatori semplicemente perchè prima vorrei farlo funzionare per risolvere una semplice espressione e poi lo vado a complicare!)il codice commentato è il seguente:
codice:
 * @(#)Calcolatrice.java
 *Questo programma si pone come scopo 
 *quello di implementare una calcolatrice 
 *in grado di eseguire tutti i calcoli 
 *seguendo il corretto ordine delle parentesi.
 *
 *Risoluzione grafica: dopo aver implementato 3stack nel sugente ordine:
 *1)Stack numeri;
 *2)Stack operatori;
 *3)Stack parentesi;
 *si procederà come segue: con una push si inseriscono i vari 
 *caratteri(numeri operatori e parentesi)nei vari stack di apparteneza
 *dopodichè tramite la pop verranno estratti uno alla volta e in ordine
 *i caratteri e verranno immessi in uno stack temporaneo.Con una successiva
 *pop verranno estratti e di volta in volta si procederà al calcolo del 
 *risultato finale.
 *
 * @author soeca
 * @version 1.00 2010/7/6
 */
public class Calcolatrice 
{	
	public static void main(String args[]) 
		{
			String string="(5+3+2)";
			
			Stacc sNumeri=new Stacc(string.length());
			Stacc sOperatori=new Stacc(string.length());
			Stacc sParentesi=new Stacc(string.length());
			Stacc sTemp=new Stacc(string.length());
			
		for (int i = 0; i<string.length(); i++)
			{
					sNumeri.Push('N');			//in ogni livello mettera' N a meno che _ _ _ _ _non e' presente 
					sParentesi.Push('N');		//o un operatore o un numero oppure una parentesi in tal caso verra' 	
					sOperatori.Push('N');		//posizionata nello stack di appartenenza
					if(string.charAt(i)=='(' || string.charAt(i)==')')
						sParentesi.Push(string.charAt(i));
				
					else 
					{
						if(string.charAt(i)=='+' || string.charAt(i)=='-' || string.charAt(i)=='*' || string.charAt(i)=='/')
							sOperatori.Push(string.charAt(i));
 _ _					else
 _ _						sNumeri.Push(string.charAt(i));
 _ _				
 _ _				}
 _ _				
			}
			for (int j = 0; j<string.length(); j++)
			{
				if(string.charAt(j)=='(' || string.charAt(j)==')')	//tutti gli elementi dello stack devono essere presi
					sTemp.Push(sParentesi.Pop( ));			//e inseriti in uno stack temporaneo
				if(string.charAt(j)=='N')			
				{
					if(string.charAt(j)=='+' || string.charAt(j)=='-' || string.charAt(j)=='*' || string.charAt(j)=='/')	
						sTemp.Push(sOperatori.Pop( ));
					else
						sTemp.Push(sNumeri.Pop( ));
				}
			}
			
			String str="";
			System.out.println("comincio a fare i calcoli delle parentesi");
			int cont=0;//contatore di parentesi
			int mem=0;/*memorizza la posizione dell'array dove 
			 è presente una parentesi così da poterla richiamare
			 successivamente per assegnare la priorità ai vari blocchi
			 di operazioni dentro le parentesi.*/
			int mem1=0;//memorizza la posizione della parentesi chiusa 
			for (int i = 0; i<string.length(); i++) 
				//con questo for entro dentro lo stack temp e memorizzo in una stringa tutti gli elementi, se 
				//trovo una parentesi aperta memorizzo la sua posizione e partendo da li comincio a svolgere le operazioni
				//fino alla parentesi chiusa 
			{	
				str+=sTemp.Pop();
					if(str.charAt(i)=='(')
					{
						System.out.println("sono dentro l'if delle parentesi");
						cont++;	
						mem=i;	
							System.out.println("cont vale"+cont+" mem vale:"+mem);
					}
					if(str.charAt(i)==')')
						mem1=i;
					System.out.println("cont vale"+cont+" mem vale:"+mem+" mentre mem1 vale:"+mem1);
			}
			cont=0;
			Calc c =new Calc();
			String risultato="";
			//Comincio a fare i calcoli
			System.out.println("fuori dal for mem vale:"+mem+" mentre mem1 vale:"+mem1);
			for (int i = mem; i<mem1; i++)
			{
				System.out.println("sto entrando nel for per fare i calcoli!");
				if(str.charAt(i+2)=='+')
				{
					System.out.println("sono dentro l'operazione somma e gli sto passando i seguenti valori:"+str.charAt(i+1)+ "e "+str.charAt(i+3));
				 	risultato+=c.Somma(str.charAt(i+1),str.charAt(i+3));
				}
				if(str.charAt(i+2)=='*')
					risultato+=c.Prodotto(str.charAt(i+1),str.charAt(i+3));
				if(str.charAt(i+2)=='-')
					risultato+=c.Differenza(str.charAt(i+1),str.charAt(i+3));
				if(str.charAt(i+2)=='/')
					risultato+=c.Quoziente(str.charAt(i+1),str.charAt(i+3));
				System.out.println("esco dal for dei calcoli e il risultato fino ad ora e':"+risultato);
			}
			//Stampiamo il risultato finale
			System.out.println("Il risultato e':"+risultato);
		} 
}
Se volete spiegato passo dopo passo quello che voglio fare(perchè magari dai commenti non si capisce) chiedete pure.Grazie a tutti