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?
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…
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.