Pessoal gostaria de esclarecimentos de vocês fiz o a classe porta como pede exercício da fj11 e todos seus atributos, métodos mais na hora de chamar na main não consigo imprimir, não aparecem resultados o que estou fazendo de errado ? já me atrapalhei aqui.
enquanto isso vou tentando aqui…
package teste;
public class Porta {
// atributos
public boolean aberta;
public String cor;
public int dimensaox;
public int dimensaoy;
public int dimensaoz;
public void abre() {
this.aberta = true;
}
public void fecha() {
this.aberta = false;
}
public String pinta(String porta) {
return porta = this.cor;
}
public boolean estaAberta() {
if (aberta) {
return true;
} else {
return false;
}
}
//public String toString(){
//return "Aberta: " + this.;
//}
}
main:
package teste;
public class TestaPorta {
public static void main(String[] args) {
Porta porta = new Porta();
porta.abre();
porta.estaAberta();
porta.pinta(" marron ");
}
}
desde já agradeço emprenho e colaboração do todos.
[code]public class TestaPorta {
public static void main(String[] args) {
Porta porta = new Porta();
porta.abre();
System.out.println(porta.aberta);//Como vc invocou o metodo abre() e depois imprimir aberta ele vai ser true.
//se a porta estiver for true(aberta) vai retorna a mensagem abaixo.
if(porta.estaAberta()){
System.out.println("porta está aberta");
}else{
System.out.println("posta fechada");//senao a porta vai ser false(fechada) essa mensagem.
}
// definindo a cor da porta
porta.pinta("marron ");
// imprimindo a cor da porta
System.out.println(porta.cor);
}
Não necessita alterar o retorno do método para boolean, pois com o void vc vai apenas setar o estado da variável aberta que já é boolean, sem ter retorno nenhum.
Quando chamei o método: porta.abre() ele mudou o estado da variável para true. pois se vc imprimir apenas isso: System.out.println(porta.aberta); sem chamar o método abre(), veja que a saída será false, pois as variáveis declarados como boolean tem valor default false.
veja a classe porta, e verifique que não alterei o retorno do método:
public class Porta {
// atributos
public boolean aberta;
public String cor;
public int dimensaox;
public int dimensaoy;
public int dimensaoz;
public void abre() {
this.aberta = true;
}
public void fecha() {
this.aberta = false;
}
public String pinta(String cor) {
return this.cor = cor;
}
public boolean estaAberta() {
if (aberta) {
return true;
} else {
return false;
}
}
//public String toString(){
//return "Aberta: " + this.;
//}
}
A casse TestaPorta
public class TestaPorta {
public static void main(String[] args) {
Porta porta = new Porta();
porta.abre();
System.out.println(porta.aberta);//Como vc invocou o metodo abre() e depois imprimir aberta ele vai ser true.
//se a porta estiver for true(aberta) vai retorna a mensagem abaixo.
if(porta.estaAberta()){
System.out.println("porta está aberta");
}else{
System.out.println("posta fechada");//senao a porta vai ser false(fechada) essa mensagem.
}
// definindo a cor da porta
porta.pinta("marron ");
// imprimindo a cor da porta
System.out.println(porta.cor);
}
}
Com isso ele vai imprimir true.
Mas vc pode usar if e exibir uma frase no lugar de true.
Mas fico feliz que tenha conseguido de outra maneira, sobrescrevendo toString(). xD