[ Resolvido ]Dúvidas, Programa 3 Caelum fj11

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());
}

}
[/code]

[code]public class TestaCasa {
public static void main(String[] args) {
Casa criaCasa = new Casa();
criaCasa.cor = “Verde”;
//criaCasa.quantasPortasEstaoAbertas();
//criaCasa.quantasPortasEstaoFechadas();

	criaCasa.mostra();
}

}
[/code]
saida:

[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…

Olá amigo,

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).

System.out.println("\n Qtd Fechadas: " + this.quantasPortasEstaoFechadas());

Vai imprimir : como se fosse uma String assim: " Qtd Fechadas 0"

Espero que tenha entendido xD

Abraços.

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

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.

saída:

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’);

vejo que está inciando em java.

veja isso, acho que vai lhe ajudar

Abraços.

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…

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

valeu manolo, Fexx

Abraços…

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!

Me ajudando bastante tambem! , obrigado pessoal

sim, deu para entender Vingdel, valeu abraço

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é!

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.

[quote=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é!
[/quote]
Foi o que eu sugeri fazer, afinal tem atributos a serem modificados.

Abraço!