Boolean valor gerado por condição em String?

9 respostas
D

Boa tarde pessoal.

tenho o codigo abaixo
int n1 = 1;
     int n2 = 2;
     
     boolean resultado = (n1 <= n2);
               
     System.out.println(resultado);
Gostaria que fazer com quem nao ficasse separado:
int n1 = 1;
     int n2 = 2;
     
     String condicao = "n1 <= n2";
     
     boolean resultado = (condicao);
               
     System.out.println(resultado);
Assim da erro tem alguma forma de fazer isso ? Notem que dentro da String condição estou chamando a variavel n1 e n2!

Abraços

9 Respostas

nel

Eu simplesmente não entendi nada do que disse :slight_smile:

Como tu quer por uma comparação e duas variáveis e atribuir isso a uma String ?
Qual o seu real objetivo ?

D

nel:
Eu simplesmente não entendi nada do que disse :slight_smile:

Como tu quer por uma comparação e duas variáveis e atribuir isso a uma String ?
Qual o seu real objetivo ?

Preciso checar uma condição independente do tamanho por exemplo: 300<=200 || 100 >200 && texto1 == “txt”
so que quem ira digitar essa condição é o usuario por isso nao posso padronizar, e no final devo exibir se é verdadeira o falsa

abraços

Thishinoda

Acho que o que você pode fazer é receber essa String "300<=200 || 100 >200 && texto1 == ‘txt’ " e tratar ela colocando os valores em variáveis.
Pega a String e vai procurando por “<=”, “>=”, “<”, “>”, “||”, “==”, etc… obtendo os valores que estão entre essas condicionais. Depois de obter os valores e as condicionais você cria a expressão a ser validada.

Só por curiosidade, que usuário vai precisar digitar uma expressão dessas :?:

lina

Oi,

int n1 = Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro valor:"));
int n2 = Integer.parseInt(JOptionPane.showInputDialog("Digite o segundo valor:"));
String condicao = JOptionPane.showInputDialog("Digite uma condição valida (> , >= , < , <= , ==)");

if (">".equals(condicao)) {
 // Testa
}
else if (">=".equals(condicao)) {
 // Testa
}
...

Tchauzin!

E

O que o Danilo quer é o “eval” do Javascript. http://www.w3schools.com/jsref/jsref_eval.asp

Entretanto, o Java não tem essa funcionalidade; você pode, por exemplo, usar o Rhino (implementação do JavaScript em Java), para rodar o JavaScript no seu programa Java.

D

Thishinoda:
Acho que o que você pode fazer é receber essa String "300<=200 || 100 >200 && texto1 == ‘txt’ " e tratar ela colocando os valores em variáveis.
Pega a String e vai procurando por “<=”, “>=”, “<”, “>”, “||”, “==”, etc… obtendo os valores que estão entre essas condicionais. Depois de obter os valores e as condicionais você cria a expressão a ser validada.

Só por curiosidade, que usuário vai precisar digitar uma expressão dessas :?:

O usuario seria um desenvolver de ficha tecnica de produtos!

eu usei um vetor mas ta dando muito trabalho para checar condição por condição ai descobri esta forma declarando uma boolean e receber a expressão, porem nao consigo puxar a string nessa expressão.

abraços

Thishinoda

Não conhecia o Rhino, mas se tiver o eval do Javascript resolve.

rmendes08

danilofpp:
Thishinoda:
Acho que o que você pode fazer é receber essa String "300<=200 || 100 >200 && texto1 == ‘txt’ " e tratar ela colocando os valores em variáveis.
Pega a String e vai procurando por “<=”, “>=”, “<”, “>”, “||”, “==”, etc… obtendo os valores que estão entre essas condicionais. Depois de obter os valores e as condicionais você cria a expressão a ser validada.

Só por curiosidade, que usuário vai precisar digitar uma expressão dessas :?:

O usuario seria um desenvolver de ficha tecnica de produtos!

eu usei um vetor mas ta dando muito trabalho para checar condição por condição ai descobri esta forma declarando uma boolean e receber a expressão, porem nao consigo puxar a string nessa expressão.

abraços

Cara, não tem jeito de fazer isso assim. Como o pessoal disse, você tem 2 alternativas: ou você faz o parse da expressão na mão, e monta um avaliador ou então você usa uma chamadade scritpt, ou Javascript ou BeanShell.

rmendes08

http://www.beanshell.org/download.html

Você pode baixar o BeanShell desse site. Depois de colocar o .jar no seu classpath você pode fazer assim:

import bsh.Interpreter;

//...

Interpeter bsh = new Interpreter();

Boolean condicao = (Boolean) bsh.eval("100 > 500 && 235 % 5 == 0");
Criado 28 de fevereiro de 2012
Ultima resposta 28 de fev. de 2012
Respostas 9
Participantes 6