Fala galera!!
Estou com a seguinte dúvida:
É possível eu obter um resultado booleano de uma expressão representada em um String?
//Assim é claramente possível
boolean t = (((45<30)||(78>70))&&(("SE"=="SE")));
//Este é o caso
String se1 = "SE";
String se2 = "SE";
String x = "(((45<30)||(78>70))&&(("+se1+"=="+se2+")))";
boolean t = algumaCoisaExecutando(x); //Existe alguma classe... ou implementação do tipo?
Valeu!
quando você faz:
String x = “(((45<30)||(78>70))&&((”+se1+"=="+se2+")))"
está na verdade criando uma String com o valor (((45<30)||(78>70))&&(("+se1+"=="+se2+")))";
ou seja…nada será avaliado ai!!!você atribuiu simplesmente um valor a String…
Não entendi direito…o que pretende…
Use BeanShell http://www.beanshell.org/
Tem um cara lá no jar que vc pode usar assim:
Classpath
import bsh.EvalError;
import bsh.Interpreter;
uso
String x = "(((45<30)||(78>70))&&(("+se1+"=="+se2+")))"; //sua salada !!
Interpreter i = new Interpreter();
String resutado= (String) i.eval(x);
System.out.printf("Resultado %s",resultado);
Boa Sorte!!
Ops!!
Essa parada aí cara da comparação das Strings não tá legal não
se1==se2 <--- isso é igual a se1.hashcode() == se2.hashcode()
use sempre para string
se1.equals(s2);
[quote=hashcode]Ops!!
Essa parada aí cara da comparação das Strings não tá legal não
se1==se2 <--- isso é igual a se1.hashcode() == se2.hashcode()
[/quote]
hmm… mais ou menos… na verdade, se1 == se2 vai comparar o “endereco” a que as referencias se referem… em outras palavras, nao vai te falar simplesmente que os objetos apondados sao semanticamente iguais, mas sim se eles sao exatamente o mesmo objeto
Pode-se usar um prototype .clone() que a referências são ortogonais. Só há o mesmo address se o objeto é static.