Eu consegui fazer esse código:
import javax.swing.*;
public class LogicalExpression {
/**
* @param args
*/
public static void main(String[] args) {
// Declaração de Variáveis
final String TITULO = "THE ANALIZATOR - 1.0";
String texto;
String saida;
String expressao = "";
String variavelP, variavelQ;
int valorP, valorQ, i;
int expressaoFinal;
char n = '~';
char e = '.';
char o = '+';
char x = 'x';
char p = 'p';
char q = 'q';
String regras;
regras = "OBSERVAÇÕES PARA A UTILIZAÇÃO DO PROGRAMA :"
+ "\n\n - As variáveis são somente P e Q assumindo valores 1 ou 0"
+ "\n\n OPERADORES A UTILIZAR :"
+ "\n\n - ' ~ ' para operação de negação"
+ "\n - ' . ' para operação e" + "\n - ' + ' para operação ou"
+ "\n - ' x ' para operação xor";
// Processamento
JOptionPane.showMessageDialog(null, regras, TITULO,
JOptionPane.INFORMATION_MESSAGE);
do {
do {
variavelP = JOptionPane.showInputDialog(null,
"Defina um valor para P :", TITULO,
JOptionPane.QUESTION_MESSAGE);
if (variavelP.equalsIgnoreCase(""))
JOptionPane.showMessageDialog(null,
"VALOR INVÁLIDO!!! \n\n Digite novamente :",
TITULO, JOptionPane.ERROR_MESSAGE);
} while (variavelP.equalsIgnoreCase(""));
valorP = Integer.parseInt(variavelP);
if ((valorP != 0 && valorP != 1))
JOptionPane.showMessageDialog(null,
"VALOR INVÁLIDO!!! \n\n Digite novamente :", TITULO,
JOptionPane.ERROR_MESSAGE);
} while (valorP != 0 && valorP != 1);
do {
do {
variavelQ = JOptionPane.showInputDialog(null,
"Defina um valor para Q :", TITULO,
JOptionPane.QUESTION_MESSAGE);
if (variavelQ.equalsIgnoreCase(""))
JOptionPane.showMessageDialog(null,
"VALOR INVÁLIDO!!! \n\n Digite novamente :",
TITULO, JOptionPane.ERROR_MESSAGE);
} while (variavelQ.equalsIgnoreCase(""));
valorQ = Integer.parseInt(variavelQ);
if (valorQ != 0 && valorQ != 1)
JOptionPane.showMessageDialog(null,
"VALOR INVÁLIDO!!! \n\n Digite novamente :", TITULO,
JOptionPane.ERROR_MESSAGE);
} while (valorQ != 0 && valorQ != 1);
do {
do {
texto = JOptionPane.showInputDialog(null,
"Digite uma expressão lógica válida :", TITULO,
JOptionPane.QUESTION_MESSAGE);
if (texto.equalsIgnoreCase(""))
JOptionPane.showMessageDialog(null,
"VALOR INVÁLIDO!!! \n\n Digite novamente :",
TITULO, JOptionPane.ERROR_MESSAGE);
} while (texto.equalsIgnoreCase(""));
for (i = 0; i < texto.length(); i++) {
if ((texto.charAt(0) != n) && (texto.charAt(0) != p)
&& (texto.charAt(0) != q))
JOptionPane.showMessageDialog(null,
"Expressão Inválida. Digite Novamente!", TITULO,
JOptionPane.INFORMATION_MESSAGE);
}
} while (((texto.charAt(0) != n) && (texto.charAt(0) != p) && (texto
.charAt(0) != q)));
for (i = 0; i < texto.length(); i++)
if (texto.charAt(i) == n)
expressao = expressao + "!";
else if (texto.charAt(i) == e)
expressao = expressao + "&&";
else if (texto.charAt(i) == o)
expressao = expressao + "||";
else if (texto.charAt(i) == x)
expressao = expressao + "^";
else if (texto.charAt(i) == p)
expressao = expressao + valorP;
else
expressao = expressao + valorQ;
JOptionPane.showMessageDialog(null, expressao, TITULO,
JOptionPane.INFORMATION_MESSAGE);
// acho que é a partir daqui que esta errado
expressaoFinal = Integer.parseInt(expressao);
saida = "Resultado = " + expressaoFinal;
JOptionPane.showMessageDialog(null, saida, TITULO,
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
}
só que ele me dá um erro no final… number format exception…
[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Reifel[/color][/size] :joia:
me ajudem por favor