Fórum Conversão de String para Boolean. #569132
09/04/2009
eaew, desculpa estar enxendo o saco de novo com isso, mais eu não consigo converter uma expressão em formato string, e jogar ela numa variavel Boolean que efetuará a soma.
Esse problema é somente uma parte do código, estou fazendo um programa que a pessoa entra com a expressão Lógica inteira (Tabela Verdade)
Exemplo de entrada de dados:
Insira o valor de A (0, 1)
Insira o Valor de B (0, 1)
Insira a Expressão: A + B . (!B @ A) . A
mais na verdade estou fazendo a parte da conversão de string pra boolean antes, já que ainda não sei como tirar os espaços, e converter as letras a e b para o valor que foi entrado e talz.
A parte da conversão o código está abaixo, e eu entraria com as informações:
true$$false||true
mais em forma de string e queria converte pra boolean, mais do jeito que fiz não compila, se alguem puder me ajudar agradeço mto.
import javax.swing.JOptionPane;
/**
* @author Mellkior
*
*/
public class Conversao {
public static void main(String[] args) {
// Declaração de variáveis
String expressaoReal;
String expressao;
boolean resultado;
String saida;
String mensagem;
int soma;
final String TITULO = "Tabela Verdade";
// Entrada de dados
mensagem = "Entre com a Expressão: ";
expressaoReal =
JOptionPane.showInputDialog( null, mensagem, TITULO, JOptionPane.QUESTION_MESSAGE);
expressao = expressaoReal;
// Processamento dos dados
resultado = Boolean.parseBoolean(expressao);
if (resultado == true)
soma = 1;
else
soma = 0;
// Saída da informação
saida = "\t\t O Resultado da expressão:"
+ "\n\t"
+ expressaoReal
+ " = "
+ soma;
JOptionPane.showMessageDialog(null, saida, TITULO, JOptionPane.INFORMATION_MESSAGE);
}}
Posts
// Processamento dos dados
resultado = Boolean.parseBoolean(expressao);
if (resultado == true)
soma = 1;
else
soma = 0;
tente assim oh ....
// Processamento dos dados
if (expressao.equals("true"))
soma = 1;
else
soma = 0;
Quando você fala que não compila, se refere ao programa inteiro ou o trecho de código abaixo ??
resultado = Boolean.parseBoolean(expressao);
1) Porque olhando o seu código inteiro, aparentemente compila tudo !
2) Pelo que entendi você que entrar com um texto "true$$false||true" e como saída quer que o método [i]parseBoolean[/i] compile isso para "A . B + A" ???
Me dá medo se você responder sim a esta última pergunta !!!
09/04/2009
Ronie Neubauer
Essa parte do IF eu testei já e ele consegue comparar a variavel boolean com true e false direto, axo q .equals é pra compara string mais vlws =D
O Problema no código é o Boolean.parse.Boolean converteu a operação em string true$$true para boolean, mais o resultado dessa conta o programa me retorna FALSE (0).
Qualquer operação que eu coloco e na conversão o resultado final fica False, o boolean.parseBoolean converte os sinais digamos || && ^^, também?
Na verdade eu quero entrar com
true$$true
em String, e converter esse
true$$true
para Boolen aonde ele já faça a conta e me mostre o resultado dela (0 ou 1)
parece inutil essa conversão, mais eu precisaria disso para termina o código da tabela verdade, pois qndo tiver pronto a entrada de dados é com A , B !A, e talz, depois eu vo converte tudo pra sinais que o boolean reconheça:
ex: a pessoa entra com
A=1
B=0
A||B ||(A)
depois vou dar um jeito para a variavel string ficar como
true||false||(true)
agora como ela já está em formato que o boolean reconhece é soh converter essa string para boolean e ele faz a soma.
O Problema é que na conversão de algum jeito o boolean não reconhece os sinais e qualquer conta ele me retorna falso.
hehe muito obrigado pela ajuda =D.
ok... era o problema que eu suspeitava...
primeiro que o método [i]parseBoolean[/i] não compila e nem tem a obrigação de compilar este tipo de expressão que você está querendo.
Veja a [url=http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Boolean.html#parseBoolean(java.lang.String)]documentação do método[/url]. Ele simplesmente pega uma [i]String[/i] contendo "true" ou "false" e converte para um valor do tipo [i]boolean[/i].
Além do que este método não indica em nenhuma momento avaliação de expressões booleanas, que é o que você está querendo.
O seu problema é um pouquinho mais complicado do que o código que estais propondo... provavelmente terás que fazer um "parsezinho" para este tipo de expressão booleana e depois fazer um algotirmo para "avaliar" estas exressões.
Desconheço alguma API pronta para este tipo de trabalho... mas deve existir.
Ahh... para entender melhor... considere o método [i]Integer.parseInt(String)[/i]. Imagine que você passe o texto "1 + 1"... este método de forma alguma vai retornar um inteiro 2 como resposta, aliás irá ocorrer um erro de compilação... justamente por ele não reconhecer expressões numéricas !!!
Flow
[quote="Mellkior"]O Problema no código é o Boolean.parse.Boolean converteu a operação em string true$$true para boolean, mais o resultado dessa conta o programa me retorna FALSE (0).
Qualquer operação que eu coloco e na conversão o resultado final fica False, o boolean.parseBoolean converte os sinais digamos || && ^^, também?
Apenas justificando o que o Java fez. Segundo a documentação... este método retorna [i]true[/i] se o texto passado é "true", "TRUE", "True"... ou algo assim. Qualquer outra coisa informada retorna [i]false[/i].
Por isso todas as suas expressões retorna [i]false[/i]
Flow
09/04/2009
Ronie Neubauer
entendo, só não entendi uma coisa
eu estou entrando com a operação em String
true$$true
na conversão ele vai responder falso pq não reconhece os sinais é isso?
Se ele reconhecer sinais sabe me dizer como que eu entro eles na string para ser convertida?
Se não reconhecer sinais na conversão então nem adianta eu fazer desse jeito, já que ele não converte operações mesmo, mais é isso, valew mesmo kara pelas repostas =D, vou procurar outro método, caso eu consiga termina o programa eu solto ele completo aki no forum caso alguem tenha q fazer algo parecido (se for de ajuda isso).
Vlws
[quote="Mellkior"]entendo, só não entendi uma coisa
eu estou entrando com a operação em String
true$$true
na conversão ele vai responder falso pq não reconhece os sinais é isso?
Se ele reconhecer sinais sabe me dizer como que eu entro eles na string para ser convertida?
Se não reconhecer sinais na conversão então nem adianta eu fazer desse jeito, já que ele não converte operações mesmo, mais é isso, valew mesmo kara pelas repostas =D, vou procurar outro método, caso eu consiga termina o programa eu solto ele completo aki no forum caso alguem tenha q fazer algo parecido (se for de ajuda isso).
Vlws
Exatamente isso, ele sempre responde [i]false[/i] pq não reconhece os sinais "$$" por exemplo. Enfim... ele não reconhece os sinais da maneira que você quer !!!
Quanto a sua solução... claro que é bem vinda... na sessão mini-programas... poderia ter um "Avaliador de expressões booleanas"
PS: Caso vc tenha alguma afinidade com compiladores... vai uma dica... usando [url=https://javacc.dev.java.net/]JavaCC[/url] você mataria essa em meia hora. Isso se já não tiver um exemplo pronto de expressões boolenas... pelo que lembro... tem apenas de expressões numéricas.
Flow