Bom pessoal, fiz desta maneira e claro que pesquisei, mais mesmo assim não sei se fiz correto ou posso fazer assim de maneira simples que eu possa entender abaixo vai o código: me corrijam, orientem se estiver errado Obrigado
[code]public class Casa {
String cor;
private int porta1;
private int porta2;
private int porta3;
private int quantasPortasEstaoAbertas = this.porta1 + this.porta2
+ this.porta3;
public void pinta(String s) {
this.cor = s;
}
public boolean aberta() {
return true;
}
public boolean fechada() {
return false;
}
public int quantasPortasEstaoAbertas() {
if (this.quantasPortasEstaoAbertas < 3) {
// se quandidade for menor que 3
// soma
}
return quantasPortasEstaoAbertas += 1;
}
public int quantasPortasEstaoFechadas() {
if (this.quantasPortasEstaoAbertas > 0) {// subtrai caso for maior
// que 0,
// esta e qntd de portas fechadas
}
return this.quantasPortasEstaoAbertas -= 1;
}
void mostra() {
System.out.println("\n Cor: " + this.cor + "\n Esta aberta: "
+ this.aberta() + "\n Fechada " + this.fechada()
+ "\n Qtd Abertas: " + this.quantasPortasEstaoAbertas()
+ "\n Qtd Fechadas: " + this.quantasPortasEstaoFechadas());
}
[quote]
Cor: Verde
Esta aberta: true
Fechada false
Qtd Abertas: 1
Qtd Fechadas: 0[/quote]
não sei o porque mais quando tiro de int para void neste método quantasPortasEstaoFechadas() e chamo dentro do método mostrar
da erro dentro so System…
não sei se entendi sua pergunta, mas parece que disse que quando altera o tipo de retorno do método de int para void ocorre um erro?
Se for isto, é porque o método tem um return quantasPortasEstaoAbertas += 1;e nessa expressão ele retorna um int, o que força o método a ter um tipo de retorno int.
O sinal de + é o unico que pode ser usado para operações e para concatenação de String.
O método mostra() está concatenando os resultados em String, se vc mudar o retorno do método quantasPortasEstaoFechadas() para void, terá que tirar o retorno dele, e tirar ele do método mostra, pois o método mostra não vai concatenar e nem imprimi nada (void).
Alterei código ficou desta maneira bom funciona, como dizem existem varias maneiras de fazer fiz desta:
public class Casa {
String cor;
public int porta1 ;
public int porta2 ;
public int porta3 ;
public int quantasPortasEstaoAbertas = porta1 + porta2 + porta3;
public void pinta(String s) {
this.cor = s;
}
//public void quantasPortasEstaoAbertas() {
// if (this.quantasPortasEstaoAbertas < 3)
// se quandidade for menor que 3 soma
// quantasPortasEstaoAbertas += 1;// abre uma porta
// }
//public void quantasPortasEstaoFechadas() {
//if (this.quantasPortasEstaoAbertas > 0)
// this.quantasPortasEstaoAbertas -= 1;// fecha uma porta aberta
//}
void mostraCorPortaAbertas() {
System.out.println("\n Cor: " + this.cor + "\n Qtd Portas Abertas: "
+ this.quantasPortasEstaoAbertas);
}
}
comentei estes métodos por estar ali não fazendo nada " public void quantasPortasEstaoAbertas() { “, " public void quantasPortasEstaoFechadas() {”, caso eu usasse na minha outra classe main de forma diferente como testei daria certo utilizaria, mais abaixo mostra como usei de forma diferente comentado o método.
public class TestaCasa {
public static void main(String[] args) {
Casa criaCasa = new Casa();
criaCasa.cor = "Verde";
criaCasa.quantasPortasEstaoAbertas = 3;
criaCasa.quantasPortasEstaoAbertas = criaCasa.quantasPortasEstaoAbertas - 1;//referencia ao mesmo obj
// criaCasa.quantasPortasEstaoFechadas();
criaCasa.mostraCorPortaAbertas();
}
}
como disse acima, quando não tinha comentado os dois métodos eu usei chamando desta forma: // criaCasa.quantasPortasEstaoFechadas();
criaCasa.mostraCorPortaAbertas(); e deram certo também.
pow fera muito bom site aqui, valeu mesmo obrigado Fexx.
Na ocasião sim sou iniciante, faço e tenho muitas dificuldades pois pratico faço sozinhos os exercícios.
Tenho muita dificuldade também na lógica, olha vo ti falar tem hora que da vontade de largar rs tu estuda estuda e não consegue fazer um simples exercício. Faz um bom tempo que pratico.
No inicio é complicado, mas isso é questão de tempo e estudo, só correr atras e estudar bastante.
No caso de exercícios que não consegue resolver, tente parar pesquisar e obter mais informações a respeito. e só avança um capitulo quando compreender o atual.
Sem desanimar, e se é isso mesmo que gosta é só correr atras.
Precisar estamos aew.
E lembre-se, a persistência é o que leva a perfeição.
Como a questão é a porta, e você está tratando de detalhes da mesma, como estado e cor, crie uma classe que vai ser uma porta genérica e ao instanciar objetos porta você passa os detalhes da porta.