Boa Noite, estou tentando programar em java a questão abaixo:
Escreva um código em Java que leia e processe uma expressão booleana que tenha três variáveis e dois operadores. Os operadores booleanos são: && (AND) e || (OR), e todos têm dois caracteres (não implementaremos o NOT). Obrigatoriamente o separador entre os tokens é ’ ’ (espaço em branco) e o nome das variáveis só pode utilizar letras. Não existe precedência entre os operadores; assim a expressão é processada da esquerda para a direita. Após ler a expressão, o programa deverá perguntar o valor de cada uma das três variável booleanas e dar o resultado final.
ex: A || B && C
A: false
B: false
C: true
Resultado: false
Se alguém puder me ajudar, já tentei de várias formas, porém não consegui resolver.
static String a;
static String b;
static String c;
static String op;
static String expressao;
public static void main (String[] args){
//lê a expressão
// ex. a && b && c
Scanner leia = new Scanner(System.in);
System.out.println("Digite a expressão booleana a ser processada: ");
expressao = leia.nextLine();
//informa o valor de a
System.out.println("Informe o valor TRUE ou FALSE da primeira variável: ");
a = leia.nextLine();
//passa o valor de a pra a1
boolean a1 = Boolean.parseBoolean(a);
//informa o valor de b
System.out.println("Informe o valor TRUE ou FALSE da segunda variável: ");
b = leia.nextLine();
//passa o valor de b pra b1
boolean b1 = Boolean.parseBoolean(b);
//informa o valor de c
System.out.println("Informe o valor TRUE ou FALSE da terceira variável: ");
c = leia.nextLine();
//passa o valor de c pra c1
boolean c1 = Boolean.parseBoolean(c);
//a expressao pode ser digitada com espaço, então tiramos o espaço
// se foi digitada assim "a && b && c" ficará assim "a&&b&&c"
String exp = expressao.replaceAll(" ", "");
//pego exatamente a posição 1,3 (por isso tirei os espaços)
//essa posição é a operação desejada && ou ||
String op1 = exp.substring(1,3);
//faz a mesma coisa de cima, pega a posição exata da próxima operação
String op2 = exp.substring(4,6);
if ((op1.equals("&&")) && (op2.equals("&&"))){
boolean resultado= (a1&&b1&&c1);
System.out.println("O resultado da expressão é: " +resultado);
}
else if ((op1.equals("&&")) && (op2.equals("||"))) {
boolean resultado= (a1&&b1||c1);
System.out.println("O resultado da expressão é: " +resultado);
}
else if ((op1.equals("||")) && (op2.equals("&&"))) {
boolean resultado= (a1||b1&&c1);
System.out.println("O resultado da expressão é: " +resultado);
}
else if ((op1.equals("||")) && (op2.equals("||"))) {
boolean resultado= (a1||b1||c1);
System.out.println("O resultado da expressão é: " +resultado);
}
}
}