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
publicclassCasa{Stringcor;privateintporta1;privateintporta2;privateintporta3;privateintquantasPortasEstaoAbertas=this.porta1+this.porta2+this.porta3;publicvoidpinta(Strings){this.cor=s;}publicbooleanaberta(){returntrue;}publicbooleanfechada(){returnfalse;}publicintquantasPortasEstaoAbertas(){if(this.quantasPortasEstaoAbertas<3){// se quandidade for menor que 3// soma}returnquantasPortasEstaoAbertas+=1;}publicintquantasPortasEstaoFechadas(){if(this.quantasPortasEstaoAbertas>0){// subtrai caso for maior// que 0,// esta e qntd de portas fechadas}returnthis.quantasPortasEstaoAbertas-=1;}voidmostra(){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());}}
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.
[]
Fexx
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).
Vai imprimir : como se fosse uma String assim: " Qtd Fechadas 0"
Espero que tenha entendido xD
Abraços.
olivercld
Certo brow, Fexx, so que se eu tirar de int para void vazio, não irá me retornar nada, só que o exercicio pede para fazer o método como int.
Grato lucianodacunha :-o
olivercld
Alterei código ficou desta maneira bom funciona, como dizem existem varias maneiras de fazer fiz desta:
publicclassCasa{Stringcor;publicintporta1;publicintporta2;publicintporta3;publicintquantasPortasEstaoAbertas=porta1+porta2+porta3;publicvoidpinta(Strings){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//}voidmostraCorPortaAbertas(){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.
publicclassTestaCasa{publicstaticvoidmain(String[]args){CasacriaCasa=newCasa();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.
saída:
Fexx
Foi exatamente como eu disse lá cima : pois o método mostra não vai concatenar e nem imprimi nada (void).
O nome já disse tudo: void.
Estava apenas explicando sua duvida ou seja, o porque surgi erro, quando vc altera o retorno para void.
Verifique novamente o que escrevi em cima.
javascript:emoticon(’:D’);
Fexx
vejo que está inciando em java.
veja isso, acho que vai lhe ajudar
Abraços.
olivercld
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.
Valeu Abraço…
Fexx
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.
Bom estudos. xD
olivercld
valeu manolo, Fexx
Abraços…
Vingdel
olivercld, boa noite!
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.
Deu para entender?
Abraço!
marcelohd02
Me ajudando bastante tambem! , obrigado pessoal
olivercld
sim, deu para entender Vingdel, valeu abraço
gilmarostjen
Mas pessoal, nos exemplos apresentados, estão declarando as portas como int.
No exercicio Caelum Programa 3, as portas são objetos. Foi criada a classe “Portas” no exercicio anterior (Programa 2).
No caso, para mostrar quantas portas estão abertas na casa, acredito que seja para usar o método “estaAberta()”, que já está na classe Portas.
Não?
Eu estou tentando fazer assim, e estou com dificuldade em colocar os objetos porta1, porta2 e porta3 na Casa.
Se alguem entender a situação e puder ajudar, agradeço.
Té!
olivercld
Brow gilmarostjen poste o codigo com a dúvida e a galera te ajuda, ou abre um tópico com sua dúvida fica a critério.
Abçs.
Vingdel
gilmarostjen:
Mas pessoal, nos exemplos apresentados, estão declarando as portas como int.
No exercicio Caelum Programa 3, as portas são objetos. Foi criada a classe “Portas” no exercicio anterior (Programa 2).
No caso, para mostrar quantas portas estão abertas na casa, acredito que seja para usar o método “estaAberta()”, que já está na classe Portas.
Não?
Eu estou tentando fazer assim, e estou com dificuldade em colocar os objetos porta1, porta2 e porta3 na Casa.
Se alguem entender a situação e puder ajudar, agradeço.
Té!
Foi o que eu sugeri fazer, afinal tem atributos a serem modificados.