felipeaqueiroz 24 de mai. de 2012
Tenta assim:
valor=porta1.estaAberta() ? valor+1: valor;
valor=porta2.estaAberta() ? valor+1: valor;
valor=porta3.estaAberta() ? valor+1: valor;
moacirjava 24 de mai. de 2012
Tenta isso:
valor = porta1 . estaAberta () ? valor ++ : valor -- ;
igor_ks 24 de mai. de 2012
isso mesmo:
valor = porta1 . estaAberta () ? valor ++ : valor -- ;
nao precisa comparar se é true igual vc fez e o felipeaqueiroz (mas ja editou, rs), pois é booleano
ViniGodoy 24 de mai. de 2012
Esse é o típico exemplo onde um if se encaixa melhor que um operador ternário.
Só a título de informação : o operador ternário não é um if . Ele tem as seguintes características :
a ) O tipo de dados antes e depois do : deve ser o mesmo ;
b ) Ele retorna valor . Portanto , o ternário pode ser usado dentro da chamada de um método ex .: seuMetodo ( a > b ? a : b );
ViniGodoy 24 de mai. de 2012
Ou um array (mais interessante ainda com um list):
public class Casa {
Porta [] portas = { new Porta (), new Porta (), new Porta ()};
int quantidadeDePortasAbertas () {
int valor = 0 ;
for ( Porta porta : portas ) {
if ( porta1 . estaAberta ()) {
valor ++ ;
}
}
return valor ;
}
}
LeandroSantanaDiniz 24 de mai. de 2012
desculpem me, mas não entendi …
vou colocar todas as classes para que entendam bem a regra de negócio do exercício.
Porta.java
public class Porta
{
String cor ;
boolean statusDeAbertura ;
void abre ()
{
this . statusDeAbertura = true ;
}
void fecha ()
{
this . statusDeAbertura = false ;
}
void colore ( String x )
{
this . cor = x ;
}
boolean estaAberta ()
{
return ( statusDeAbertura ) == ( true ) ? ( true ) : ( false );
}
void mostra ()
{
System . out . println ( "Cor: " + cor );
System . out . println ( "Está aberta?" + statusDeAbertura );
}
}
Casa.java
public class Casa
{
Porta porta1 = new Porta ();
Porta porta2 = new Porta ();
Porta porta3 = new Porta ();
int quantidadeDePortasAbertas ()
{
int valor = 0 ;
//com IF
if ( porta1 . estaAberta ()) { valor ++ ; }
if ( porta2 . estaAberta ()) { valor ++ ; }
if ( porta3 . estaAberta ()) { valor ++ ; }
//com Operador Ternário
//porta1.estaAberta() = (true) ? (true) : (false);
//(porta2.estaAberta()) = (true) ? (valor++) : (valor);
//(porta3.estaAberta()) = (true) ? (valor++) : (valor);
return valor ;
}
}
e PPorta que tem o main
public class PPorta
{
public static void main ( String [] args )
{
Casa casa1 = new Casa ();
casa1 . porta1 . abre ();
casa1 . porta2 . fecha ();
casa1 . porta3 . abre ();
System . out . println ( casa1 . quantidadeDePortasAbertas ());
}
}
Rodrigo_Sasaki 24 de mai. de 2012
LeandroSantanaDiniz:
desculpem me, mas não entendi …
vou colocar todas as classes para que entendam bem a regra de negócio do exercício.
O exemplo do ViniGodoy resolve seu problema, ele deu a idéia de criar um array de portas aí ao invés de ter 3 atributos porta
Porta porta1 = new Porta();
Porta porta2 = new Porta();
Porta porta3 = new Porta();você vai ter um array com 3 portas
Porta[] portas = {new Porta(), new Porta(), new Porta()};e acessa elas assim:
portas[0].abre();
portas[1].fecha();
portas[2].abre(); Rodrigo_Sasaki 24 de mai. de 2012
lina:
pmlm:
lina:
Oi,
Ninguém conhece a condição or ?
valor = porta1 . estaAberta () || porta2 . estaAberta () || porta3 . estaAberta () ? valor + 1 : valor ;
Tchauzin!
Como é que isto calcula o número de portas abertas?
Oi,
Olha o código novamente.
Tchauzin!
Mas se as 3 portas estiverem abertas, será somado somente 1 ao valor atual, não é?
Nunca fiz ternários com operador or