non è molto pulito comunque metto solo la parte dove mi da il problema
//Scorro l'espressione
for(int i=0;i<espressione.length();i++)
{
if(espressione.charAt(i)=='^')
{
pos=i;
if(contaApici==0){
contaApici++;
while(pos!=0)
{
pos--;
if(espressione.charAt(pos)=='(')
contaAperta++;
if(espressione.charAt(pos)==')')
contaChiusa++;
}
//se siamo dentro una parentesi
if(contaChiusa!=contaAperta)
{
contaApici=0;
contaAperta=-1;
contaChiusa=-1;
potenza--;
//non lo siamo
}else
{
contaAperta=1;
contaChiusa=1;
}
pos=i;
if(contaChiusa==contaAperta && contaAperta!=-1){
contaAperta=0;
contaChiusa=0;
//se il 1° operando è fra parentesi applico la ricorsione
if(espressione.charAt(i-1)==')')
{
pos--;
//while(espressione.charAt(pos)!='(')
while(contaAperta!=1)
{
pos--;
if(espressione.charAt(pos)=='(')
contaAperta++;
if(espressione.charAt(pos)==')')
contaAperta--;
}
contaChiusa=0;
contaAperta=0;
for(int j=pos+1;j<i-1;j++)
{
app+=espressione.charAt(j);
}
System.out.println(app);
eliminata+="("+app+")^";
n1=valuta(app);
app="";
pos=i;
}