publicclassSSBool{publicstaticvoidmain(String[]args){booleanb1=true;booleanb2=false;booleanb3=true;if(b1&b2|b2&b3|b2)//como faço para saber a saidaSystem.out.println("ok");if(b1&b2|b2&b3|b2|b1)System.out.println("dokey");////como faço para saber a saida}}
[size=“11”]
[color=“red”]
Editado: Aumente as chances de alguém responder o seu tópico. Use BBCode em seus códigos para mantê-los identados e mais legíveis para outros usuários. - Matheus[/color][/size] :joia:
Sua dúvida é com relação a tabela verdade do AND e OR? :roll:
_
_RenatuPJ
o ideal ai… principalmente quando voce tem duvidas… separar em parenteses…
& faz um AND… retorna true apenas se os dois termos forem verdadeiros…
| faz um OR… retorna false apenas se os dois termos forem falsos…
no seu caso o ideal seria separar… algo como
((b1&b2)|b2)&(b3|b2)
foi so um exemplo, nao sei se seu codigo retorna isso…
mas se sua duvida for o seu codigo realmente retorna…
eu acho que ele le as operacoes da direita pra esquerda
entao no seu codigo
b1 & b2| b2 & b3|b2
ele faria primeiro b3|b2 ai faria o resultado & b2… o resultado | b2… e o resultado & b1
se estiver errado, alguem me corrija por favor…
S
SchuenemannPJ
Leia da esquerda para a direita. Toda vez que achar um AND, coloque as 2 partes do AND entre parêntereses.
No final, vai sobrar um monte de OR. Se algum for true, a expressão é verdadeira.
b1&b2|b2&b3|b2
é o mesmo que:
(b1&b2)|(b2&b3)|b2// resulta em F or F or F
b1&b2|b2&b3|b2|b1
é:
(b1&b2)|(b2&b3)|b2|b1// F or F or F or T
Um exemplo maior:
b1&b2&b3|b1|b1&b2&b3&b1&b2
Ficaria:
((b1&b2)&b3)|b1|((((b1&b2)&b3)&b1)&b2)
( (T and F) and T ) or T or ( ( ( (T and F) and T ) and T ) and F ).
Dá pra ver pelo “T” isolado que vai ser true. Os outros 2 lados só têm AND, e como tem pelo menos um F no meio, vai ser false.
R
rafawellPJ
E isso aqui…
false&&true|false&true|false
false&&true|false&true||false
Pelo que eu vi no primeiro ele retorna false e no segundo true, no primeiro acho que ele ja quebra na primeira operacao de && mas no segundo ele faz tudo, por que ?
S
SchuenemannPJ
Não, retorna false nos 2.
Os operadores && e || são “curto-circuito”.
Nos dois casos, ele é lido como “false and qualquer coisa”, e dá false.
Ele nem avalia o resto da expressão.
J
JavaDropsPJ
Aff, acho que todo mundo foi pela idéia mais complicada.
O que ele disse foi como saber a saída e não como chegar na saída...
Não precisa usar o if, pode jogar o resultado direto em um boolean, mas se quiser usar o if: