Exercício Pagina 56 apostila CEALUM, exercício da "CASA"

8 respostas
maaelphd

Boa noite amigos!

Estou fazendo mais um exercício da apostila do Cealum, e estou com um problema, o código compila, mas não me mostra o resultado esperado, pra vocês entenderem o que é pra fazer vou colar o exercício que segue:
Programa 3Classe: Casa Atributos: cor, porta1, porta2, porta3 Método: void pinta(String s), int quantasPortasEstaoAbertas()Crie uma casa e pinte-a. Crie três portas e coloque-as na casa; abra e feche as mesmas
como desejar. Utilize o método quantasPortasEstaoAbertas para imprimir o número de portas abertas

bem eu intendi o que é pra fazer e fiz, mas como disse ele me mostra o resultado errado, eu já olhei outros posts no forum, até achei alguns posts com o mesmo exercício, mas não encontrei o que precisava, até por que cada um faz o código da forma que sabe, e não achei um semelhante ao meu, bem ai segue o código que fiz:

public class Casa {

	String cor;
	int p1;
	int p2;
	int p3;
	int total;
	String pinta;
	
	int quantasPortasEstaoAbertas(){
	boolean porta1 = true;
			if (porta1 == true);{
				p1 = 1;
				total = p1;
		}
	boolean porta2 = true;
		if (porta2 == true);{
				p2 = 1;
				total = total + p2;
		}
	boolean porta3 = true;
			if (porta3 == true);{
				p3 = 1;
				total = total + p3;
		}
		return total;
	}
		{
		System.out.println("A Quantidade de portas que estão abertas e : " +total);
}
	
	void pinta(String s){
		String pinta = this.cor = s;
	this.cor = pinta;
	}
		
}

e a class de teste a baixo :

public class TestaCasa {

	public static void main(String args[])	
{
	Casa c= new Casa();
			
c.cor = "Azul";
c.pinta = "Rosa";


System.out.println("Cor Antiga da Casa : " +c.cor);
System.out.println("Cor Nova da Casa : " +c.pinta);

}
}

e aqui o resultado que ele me mostra

A Quantidade de portas que estão abertas e : 0 Cor Antiga da Casa : Azul Cor Nova da Casa : Rosa

eu já mexi de tudo qualquer jeito nesse código, vocês podem achar até meio desorganizado, mas é que fui eu mexendo pra testar!
se alguém puder me ajudar ficarei grato!

8 Respostas

lordkure

Qual seria o resultado correto na saída?
Já adianto que existem uns “;” a mais no código e pelo menos 1 chave errada.

Vinicius_T_Ferreira

[color=blue]Maaelphd[/color], sou iniciante na linguagem, contudo acredito estar raciocinando baseado em uma lógica correta. Corrija-me se eu estiver errado, você deve atribuir o valor <total + px> à variável , então, quando a for verdadeira, o valor atribuído à variável deve seguir a mesma lógica: <total + p1>. Caso contrário, se a estiver aberta (TRUE) antes da , então <total = total + p2>; porém, se logo em seguida a< porta1> abrir (TRUE), então a variável passará a valer ou seja <1> e não <2> (p2+p1), pois você atribuiu para a variável , em caso de <porta1 == TRUE>, o valor e não <total = total + p1>.
Espero ter ajudado, abraço.
[color=red] Corrija-me se eu estiver errado.[/color]

lordkure

Olha sou novato também, mas faria isso da seguinte forma...

public class Casa {

	private String cor;
	private boolean p1;
	private boolean p2;
	private boolean p3;
	
	public Casa() {
		super();
	}

	public Casa(String cor, boolean p1, boolean p2, boolean p3) {
		super();
		this.cor = cor;
		this.p1 = p1;
		this.p2 = p2;
		this.p3 = p3;
	}
	
	public void pinta(String s){
		this.cor = s;
	}
	
	public int quantasPortasEstaoAbertas(){
		int total = 0;
		if(this.p1 == true){
			total += 1;
		}if(this.p2 == true){
			total += 1;
		}if(this.p2 == true){
			total += 1;
		}
		return total;
	}

	public String getCor() {
		return cor;
	}

	public void setCor(String cor) {
		this.cor = cor;
	}

	public boolean isP1() {
		return p1;
	}

	public void setP1(boolean p1) {
		this.p1 = p1;
	}

	public boolean isP2() {
		return p2;
	}

	public void setP2(boolean p2) {
		this.p2 = p2;
	}

	public boolean isP3() {
		return p3;
	}

	public void setP3(boolean p3) {
		this.p3 = p3;
	}
	
	
	
}
public class Guj {
	public static void main(String[] args){
		
		Casa c = new Casa();
		
		c.pinta("Rosa Choque");
		
		c.setP1(false);
		c.setP2(true);
		c.setP3(true);
		
		System.out.println("-----------------------------------------------------");
		System.out.println("Uma casa acabou de ser criada!");
		System.out.println("Cor da casa: " + c.getCor());
		System.out.println("Quantidades de portas abertas: " + c.quantasPortasEstaoAbertas());
		System.out.println("-----------------------------------------------------");
		
	}
}

Saída...

-----------------------------------------------------
Uma casa acabou de ser criada!
Cor da casa: Rosa Choque
Quantidades de portas abertas: 2
-----------------------------------------------------
maaelphd

Vinicius, eu entendi o que você quis dizer, e realmente você tinha razão naquela lógica, mas mesmo assim não era só aquilo, o erro era no metodo todo de portas abertas, do modo que o Lordkure fez deu certinho! Valeu

Lordkure, é isso mesmo, seu código deu certo, eu fui comparando o seu com o meu e fui corrigindo, deu pra entender o que você fez (:
Como eu to só lendo a apostila, é complicado pois não tenho quase nada de noção de java né, a não ser do que eu já vi na apostila, mas vou continuar né pelo menos até fazer um curso!

Valeu mesmo, ajudou muito! (:

R

Compra.o livro do deitel… java como programar… pra mim e o o melhor livro pra quem nunca mexeu com java.

lordkure

maaelphd:
Vinicius, eu entendi o que você quis dizer, e realmente você tinha razão naquela lógica, mas mesmo assim não era só aquilo, o erro era no metodo todo de portas abertas, do modo que o Lordkure fez deu certinho! Valeu

Lordkure, é isso mesmo, seu código deu certo, eu fui comparando o seu com o meu e fui corrigindo, deu pra entender o que você fez (:
Como eu to só lendo a apostila, é complicado pois não tenho quase nada de noção de java né, a não ser do que eu já vi na apostila, mas vou continuar né pelo menos até fazer um curso!

Valeu mesmo, ajudou muito! (:

Opa, que bom que pude ajudar.
Como mencionado, existem livros muito bons e não desiste não no começo é assim mesmo :wink:

igor_ks

só lembrando

if(this.p1 == true){

campos booleando não tem necessidade de verificar se é true ou false, pois seu retorno já trará isso

poderia ter ficado apenas assim:

if(this.p1){
lordkure

[quote=igor_ks]só lembrando

if(this.p1 == true){

campos booleando não tem necessidade de verificar se é true ou false, pois seu retorno já trará isso

poderia ter ficado apenas assim:

if(this.p1){

Opa Igor, bem lembrado, esqueci desse detalhe, vlw :wink:

Criado 15 de janeiro de 2013
Ultima resposta 15 de jan. de 2013
Respostas 8
Participantes 5