Ola!
Estou dando meus primeiros passos em Java e agarrei em uma duvida… Preciso de uma ajudinha!!
Exercicio 2 - Cap 4 - Caelum
Tenho que criar o metodo que seja BOOLEAN, eu vi uma duvida aqui no forum e a solucao dada foi criar ele como String, porem nao pode…!
Meus problemas:
1 - do jeito que o codigo esta aqui, esta rodando porem nao aparece se a porta esta aberta ou nao ao rodar o programa…
2 - se tiro o else todo do metodo estaAberta, aparece um erro: “missing return statement”
public class C43Porta {
boolean aberta;
String cor;
double dimensaoA;
double dimensaoL;
double dimensaoP;
void abre(){
if ( this.aberta == false){
this.aberta = true;
System.out.println("Sua porta esta aberta agora!");
}
}
void fecha(){
if ( this.aberta == true){
this.aberta = false;
System.out.println("Sua porta esta fechada agora!");
}
}
void pinta(String s){
String antes = this.cor;
this.cor = s;
System.out.println("Sua porta era: " + antes + " agora que a pintamos, ficou: " + this.cor + ".");
}
boolean estaAberta() {
if (this.aberta == true) {
System.out.println("Porta aberta.");
return true;
} else {
System.out.println("Porta fechada.");
return false;
}
}
}
public class C43TestaPorta {
public static void main (String [] args){
System.out.println("Informacoes de sua porta: \n");
C43Porta p = new C43Porta();
p.aberta = false;
p.cor = "Vermelha";
p.dimensaoA = 2;
p.dimensaoL = 4.5;
p.dimensaoP = 1;
p.abre();
p.pinta("azul");
p.pinta("rosa");
System.out.println("Dimensoes --- Alt: " + p.dimensaoA + " | Larg: " + p.dimensaoL + " | Profundidade: " + p.dimensaoP);
p.estaAberta(); //imaginava que aqui fosse aparecer a informacao de porta aberta, mas nao aparece
}
}
Não sei se atende a necessidade pois não entendi:
Alterações:
public class C43Porta {
private boolean aberta;
private String cor;
private double dimensaoA;
private double dimensaoL;
private double dimensaoP;
public C43Porta(String cor, double dimensaoA, double dimensaoL, double dimensaoP) {
this.cor = cor;
this.dimensaoA = dimensaoA;
this.dimensaoL = dimensaoL;
this.dimensaoP = dimensaoP;
}
public double getDimensaoA() {
return dimensaoA;
}
public double getDimensaoL() {
return dimensaoL;
}
public double getDimensaoP() {
return dimensaoP;
}
public void setDimensaoA(double dimensaoA) {
this.dimensaoA = dimensaoA;
}
public void setDimensaoL(double dimensaoL) {
this.dimensaoL = dimensaoL;
}
public void setDimensaoP(double dimensaoP) {
this.dimensaoP = dimensaoP;
}
public void abrir() {
aberta = true;
System.out.println("A porta foi aberta.");
}
public void fechar() {
aberta = false;
System.out.println("A porta foi fechada.");
}
void pintar(String cor) {
System.out.println("A porta era " + this.cor.toLowerCase() + ", mas foi pintada e agora é " + cor.toLowerCase() + ".");
this.cor = cor;
}
boolean estaAberta() {
System.out.println("A porta está "+(aberta ? "aberta." : "fechada."));
return aberta;
}
}
Alterações no método main:
public static void main(String args[]) {
C43Porta porta = new C43Porta("Vermelha", 2, 4.5, 1);
porta.abrir();
porta.pintar("azul");
System.out.println("Detalhes da porta:\nAltura: " + porta.getDimensaoA() + ";\nLargura: " + porta.getDimensaoL()
+ ";\nProfundidade: " + porta.getDimensaoP()+".");
porta.estaAberta();
}
Executei seu programa sem alterar nada e aparece sim, veja:
Sua porta esta aberta agora!
Sua porta era: Vermelha agora que a pintamos, ficou: azul.
Sua porta era: azul agora que a pintamos, ficou: rosa.
Dimensoes --- Alt: 2.0 | Larg: 4.5 | Profundidade: 1.0
Porta aberta. // Aqui está a mensagem apresentada pelo método estaAberta
Dica para melhorar seus códigos:
Não escreva dessa forma:
if ( condicao == true ) {
// faz algo
}
if ( condicao == false ) {
// faz algo
}
Ao invés disso escreva:
if ( condicao ) {
// faz algo
}
if ( !condicao ) {
// faz algo
}
Outra situação é com métodos que retornam boolean o método abaixo por exemplo:
boolean estaAberta() {
if (this.aberta == true) {
System.out.println("Porta aberta.");
return true;
} else {
System.out.println("Porta fechada.");
return false;
}
}
Pode ser escrito de forma mais simples:
boolean estaAberta() {
if ( aberta ) {
System.out.println("Porta aberta.");
} else {
System.out.println("Porta fechada.");
}
return aberta;
}
Ou mais simples:
boolean estaAberta() {
if ( aberta ) {
System.out.println("Porta aberta.");
return true;
}
System.out.println("Porta fechada.");
return false;
}
Ou mais simples ainda:
boolean estaAberta() {
System.out.println( aberta ? "Porta aberta." : "Porta fechada." );
return aberta;
}
Realmente bem mais simples!! Muuuuuito obrigada!!!