Expressão booleana

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.

Posta as formas q vc tentou

1 curtida

Já consegui!!

import java.util.Scanner;
public class Programa {

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