Pessoal estou com grandes problemas com Array. Se alguém puder me disponilizar algum material. Que deixe bem claro as idéias. Obrigado
Estou com uma dúvida aki…
[code]package ExercicioFixacaoPg48;
public class Casa {
String cor;
Porta[] portas;
void pintarCasa (String valor) {
cor = valor;
}
void mostrar() {
for (int i = 0; i < portas.length; i++){
portas = new Porta[i];
System.out.println(cor);
System.out.println(portas[i].cor);
System.out.println(portas[i].dimensaoX);
System.out.println(portas[i].dimensaoY);
System.out.println(portas[i].dimensaoZ);
System.out.println(portas[i].estaAberta);
}
}
}[/code]
[code]
package ExercicioFixacaoPg48;
public class Porta {
boolean estaAberta;
String cor;
double dimensaoX;
double dimensaoY;
double dimensaoZ;
void abre(){
estaAberta = true;
}
void fecha(){
estaAberta = false;
}
void pinta(String valor){
cor = valor;
}
}[/code]
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package ExercicioFixacaoPg48;
/**
*
-
@author fabio
*/
public class TestaCasa {
public static void main (String[] args){
Casa casa = new Casa();
casa.portas[3] = new Porta();
for (int i = 0;i < 3; i++) {
casa.portas[i].cor = “azul”;
casa.portas[i].dimensaoX = 10;
casa.portas[i].dimensaoY = 10;
casa.portas[i].dimensaoZ = 10;
casa.portas[i].estaAberta = false;
casa.pintarCasa(“verde”);
}
casa.mostrar();
}
}[/code]
Pessoal Não tem nenhum erro de Implementação… Mais não consigo fazer exibir… Como array…
Obrigado pela atenção
:lol:
Acho melhor você especificar sua dúvida, ou vai ficar dificil alguem ajudar. :roll:
Aqui tem um erro de implementação:
void mostrar() {
for (int i = 0; i < portas.length; i++){
portas = new Porta[i];
System.out.println(cor);
System.out.println(portas[i].cor);
System.out.println(portas[i].dimensaoX);
System.out.println(portas[i].dimensaoY);
System.out.println(portas[i].dimensaoZ);
System.out.println(portas[i].estaAberta);
}
}
deveria ser:
void mostrar() {
for (int i = 0; i < portas.length; i++){
// portas = new Porta[i]; -- retirando esta linha pois nao faz sentido.
System.out.println(cor);
System.out.println(portas[i].cor);
System.out.println(portas[i].dimensaoX);
System.out.println(portas[i].dimensaoY);
System.out.println(portas[i].dimensaoZ);
System.out.println(portas[i].estaAberta);
}
}
Pessoal. É que eu ainda não entendo de Array. Então não sei como especificar…
Estou tentando entender… Sobre aquele erro ali em cima… resultou igual…
Mesmo assim Obrigado… Mais ainda estou precisando de Ajuda…
Fabio, vou tentar um pouco, ok?
Quando vc declara:
Porta[] portas
Você cria uma REFERÊNCIA a um array de portas. Esse array AINDA não existe. Para existir, teria que ser:
Porta[] portas = new Porta[4];
Agora você possui uma referência a um array, e este array EXISTE. Porém, dentro de cada item não existe nenhuma porta, porque você declarou o array.
Então, vc iria item por item do array, criando as portas.
for (int i = 0; i < 4; i++)
portas[i] = new Porta();
Você entende o conceito de referências e objetos?
Objeto é um espaço qualquer na heap. Referência são as variáveis que nós temos.
É mais fácil ver num array de int.
int lista[] = new int[10];
Isto criou um OBJETO array e uma referência para array; a referência aponta para o objeto.
int lista[] = new int[10];
lista = new int[20];
Na primeira linha criou-se um objeto array e uma referência array. A segunda linha criou OUTRO objeto array, e agora a não haverá mais referência pro objeto anterior.
Na hora que o objeto array é criado, cada um de seus índices recebe o valor padrão do tipo - primitivo - ou null - para não primitivos.
Acho legal entender isso mas, na prática, a gente quase nunca usa array assim, estático. Usa alguma Collection dinânica qualquer, tipo ArrayList, HashMap, etc.
Ok Amigão… Vou tentar resolver aki…
Obrigado pela dica…
Viu… eu fiz as alterações que você me explicou mesmo assim…
Ainda da este erro aki
Exception in thread “main” java.lang.NullPointerException
at ExercicioFixacaoPg48.TestaCasa.main(TestaCasa.java:12)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
Estou num dia de muito bom humor, então vai lá rs
class Porta {
private boolean estaAberta;
private String cor;
private double dimensaoX;
private double dimensaoY;
private double dimensaoZ;
void abre() {
setEstaAberta(true);
}
void fecha() {
setEstaAberta(false);
}
void pinta(String valor) {
setCor(valor);
}
/* milhoes de gets & sets */
}
class Casa {
private String cor;
private Porta[] portas;
public Casa(int numeroPortas) {
portas = new Porta[numeroPortas];
for (int i = 0; i < numeroPortas; i++) {
portas[i] = new Porta();
portas[i].setCor("azul");
portas[i].setDimensaoX(10);
portas[i].setDimensaoY(10);
portas[i].setDimensaoZ(10);
portas[i].setEstaAberta(false);
}
pintarCasa("verde");
}
void pintarCasa(String valor) {
cor = valor;
}
void mostrar() {
System.out.println("Cor da casa: "+ cor);
for (int i = 0; i < portas.length; i++) {
System.out.println("----Porta "+i+"------");
System.out.println(portas[i].getCor());
System.out.println(portas[i].getDimensaoX());
System.out.println(portas[i].getDimensaoY());
System.out.println(portas[i].getDimensaoZ());
System.out.println(portas[i].isEstaAberta());
System.out.println("-------------------");
}
}
}
public class TesteCasa {
public static void main(String[] args) {
Casa casa = new Casa(3);
casa.mostrar();
}
}
Funcionou que eu testei. A diferença é que eu instanciei o array, instanciei cada item do array na hora da criação da casa, e fiz os troços tudo private.
Obrigado… Amigão…
Na verdade eu estou aprendendo ainda…
E array… é uma coisa bem dificil pra mim…
Vou ler o seu código… e tentar entender todas as partes… Obrigado… mesmo
[resolvido]
Fábio,
Leia atentamente a EXPLICAÇÃO que dei acima, sobre a instanciação dos arrays.
Depois veja com cuidado o construtor da classe Casa, principalmente as linhas 29, 30 e 31.
Faça maiores testes, mas creio que a explicação + código responderá e explicará tudo.
Aliás, não sou ‘amigão’ e sim ‘amigona’ 
Então eu tentei. fazer na clase
Teste casa. E não consgui cara…