Reconhecer String como operação

Ola estou fazendo um exercicio que verifica se a operacao e comutativa , associativa, etc. Para isso, eu passo uma string. So que por exemplo, para um caso de comutativa eu teria:

a+b-3 = b+a-3 (ela e comutativa)

da mesma forma que essa aki tbm e comutativa:

(2a)+b-3 pois ela e igual a (2b)+a-3.

eu consegui fazer o metodo reconhecer o a e o b. mas eu queria q ele reconhecesse os parenteses, para saber q eu estou separando ele da operacao. eu estava fazd assim mas dava errado:

String str = "(2a)+b-3"; 

so q dava errado, entao eu tentei assim:

Sring str = ("2a")+"+b-3";

e deu certo, pelo menos respondeu q e comutativa, do contrario da forma q eu fiz anteriormente. Eu gostaria de saber se esta certo a forma que eu fiz, pra o Java identificar q ele esta separando o que esta dentro do parenteses dakela forma, usando o parenteses fora das aspas, e concatenando com outra string.

Ah outra coisa, ele n imprime os parenteses, ja que eles estao do lado de fora das aspas, no caso do exemplo do Sring str = ("2a")+"+b-3"; ele imprimi 2a+b-3 . Como eu faria um jeito pra imprimir esses parentese?

Vlw.

ola fiz uns testes aqui…

package strings; public class TestaString { public TestaString() { } public static void main (String[]args) { String str = ("2a")+"+b-3"; String str2 = "(2a)+b-3"; System.out.println((""+str)); System.out.println((""+str2)); } }

que resultou na impressão correta dos parenteses… na str2
assim:
[color=red]run-single:
2a+b-3
(2a)+b-3
EXECUTADO COM SUCESSO (tempo total: 0 segundos)[/color]

vc tambem esta colocando ali sring… pode ser um erro…
outra questão, basta apenas imprimir o parenteses, ou tem que efetuar o calculo ?

desta forma…
para o calculo, acho que da para fazer tudo separado, por exemplo. uma variavel, 2a, e aí depende o que queremos… + b e - 3 ou + (b-3) que pode ser outra variável…

a primeira substituindo [color=violet]a por 3 e b por 2[/color], ate deu o mesmo resultado, mas a segunda nao…
(2a)+b-3 pois ela e igual a (2b)+a-3.
23 = 6 +2 - 3 = 5 e 22=4 +3-3 =4

esta segunda fórmula existe, está correta, é possivel?
valeu, segue as minhas considerações.
FEEDBACK…

isso porque a segunda não é comutativa! :twisted:

sim. a segunda não é comutativa.

Concordo.

Porém em relação a impressão dos parenteses, ficou tudo bem…
já se o calculo deve ser feito, ou se será feito,
e outro assunto. Vai ter cálculo ?

[quote=raghy]sim. a segunda não é comutativa.

Concordo.

Porém em relação a impressão dos parenteses, ficou tudo bem…
já se o calculo deve ser feito, ou se será feito,
e outro assunto. Vai ter cálculo ?

[/quote]
Nao e questao de calculo, e so pra testar se a operacao e comutativa. olha o meu programa como esta.

import java.lang.String;
class operacaoBinaria {
	public static void main(String[] args) 
	{
	
		//String str = "a+b-3"; //a*b Essa e comutativa
		//String str = "a.b-3"; //a*b Essa tbm e comutativa
		String str = "(2a)+b-3"; //a*b


		boolean resp = ehComut(str);
		System.out.println(resp);
	}
	public static boolean ehComut(String str) {
		String x="x", y="y";
		String esq = substituicao(x,y,str); //x+y-3
		String dir = substituicao(y,x,str); //y+x-3
		System.out.print(esq+" "+dir);
		dir = troca(dir);
		System.out.println(" "+dir);
		if (esq.equalsIgnoreCase(dir))
			return true;
		return false;
	}
	public static String substituicao(String x,String y,String str) {
		return (str.replace("a",x)).replace("b",y);
	}
	public static String troca(String aux) {
		if (aux.indexOf("y+x") != -1)
			return aux.replace("y+x","x+y");	
		if (aux.indexOf("y.x") != -1)
			return aux.replace("y.x","x.y");	
		return aux;
	}
}

Vejam se entenderam. eu quero que ele considere o parenteses na avaliacao da operacao, se nao nao faz sentido. Tem q ter alguma forma de ele saber q akale parentese e pra akela funcionalidade, ou seja, separar eles, talvez la no metodo onde eu digo q x=“x” e y=“y”. nao sei se tiverem uma ideia me avisem.
Vlw.