Boa noite Galera, alguém pode me ajudar ? O que eu fiz de errado pra este código não compilar?
publicCandlestick(doubleabertura,doublefechamento,doubleminimo,doublemaximo,doublevolume,Calendardata){
this.abertura=abertura;this.fechamento=fechamento;this.minimo=minimo;this.maximo=maximo;this.volume=volume;this.data=data;if(this.abertura<0)|(this.fechamento<0){//esse|docódigonãocompilathrownewIllegalArgumentException("Valor não pode ser negativo");}
Oi @thiagofranceschini!
A intenção é utilizar um OU dentro do if? Se sim, o operador é || e não |
rmendes08
Olá, o problema é que em Java, a expressão avaliada no bloco if tem que estar toda ela dentro de parênteses, portanto o seu código deve ser:
if( (this.abertura < 0)|(this.fechamento < 0) ) {
ou
if( this.abertura < 0 | this.fechamento < 0 ) {
rmendes082 likes
Os dois operadores: || e | funcionam como o operador OU lógico. A diferença é que o operador || funciona como operador de curto-circuito. Considere a seguinte expressão:
expr1 || expr2 || expr3
utilizando o operador ||, caso expr1 seja verdadeira as expressões restantes não são nem avaliadas, basta que uma delas seja verdadeira para a expressão inteira seja verdadeira. Já o operador | força todas as expressões do comando serem avaliadas. Um experimento interessante é criar expr1(), expr2(), expr3() como métodos que retornam booleanos e imprimem algo no console, combiná-los com os operadores || e |, && e & e observar a saída.
T
thiagofranceschini
Obrigado @rmendes08 e @elvex ,
eu vim do python e esse tipo de estrutura é feita com muito mais liberdade na linguagem, e por isso não vi o erro na falta do parenteses!
Em python você pode colocar dentro ou fora.
Obrigado, não esqueço mais!