GARANTIR DESCONTO

Fórum Conversão de String para Boolean. #569132

09/04/2009

0

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);

	}}
Ronie Neubauer

Ronie Neubauer

Responder

Posts

09/04/2009

Victor Muniz

      // 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;
Responder

Gostei + 0

09/04/2009

Giovane Kuhn

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 !!!
Responder

Gostei + 0

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.
Responder

Gostei + 0

09/04/2009

Giovane Kuhn

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
Responder

Gostei + 0

09/04/2009

Giovane Kuhn

[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
Responder

Gostei + 0

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
Responder

Gostei + 0

09/04/2009

Giovane Kuhn

[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
Responder

Gostei + 0

09/04/2009

Ronie Neubauer

humm, valew a dica, mais infelizmente temos que entregar o código sem compilar, e ainda por cima temos que usar Eclipse. Trabalho de faculdade isso, hehe, consegui encontrar dois comando que vão me ajudar converter
charAt(); verifica caracter por caracter
length(); vai até o ultimo caracter
A para true e false e B tbem, vou ver o que consigo fazer nessa tarde, ae qndo terminar o programa Vou soltar em mini programas ele que entra com uma expressão lógica inteira e retorna o valor final dela. Valews ae galera pela ajuda.
Responder

Gostei + 0

09/04/2009

Giovane Kuhn

Cara... fiquei impressionado com esta API, bastante coisa já: [url]http://www.singularsys.com/jep/index.html[/url] Flow
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar