Estou a criar ( universidade ) um conjunto de classes e cheguei a um ponto em que tenho uma dúvida... bem não é uma dúvida, apenas ao mandar executar a classe o resultado vai ser o mesmo:
Contexto: Uma classe Carro construtora que tem várias variáveis, ano de construção, cor, matricula, cilindrada etc... O objectivo foi criar uma rotina noutra classe que permite obter os Carros no Stand nos anos anteriores ao argumento dado ( int ano); A duvida é saber a diferença entre as duas rotinas seguintes:
1 - Esta rotina primeiro calcula os carros no vector ( ou no stand) que têm anos anteriores ao dado
2 - Depois cria um vector com a dimensão dos carros calculados no ponto 1.
3 - Percorre o vector ( ou stand) novamente, e coloca os carros no novo vector, devolvendo-o
public Carro[] getCarrosAnterioresAno(int ano){
int numerocarros = 0;
for (int i = 0; i < numcarros; i++){
if (this.listacarros[i].getAno() <= ano)
numerocarros++;
}
Carro[] lista = new Carro[numerocarros];
for (int i = 0, p = 0; i < numcarros; i++){
if (this.listacarros[i].getAno() <= ano){
lista[p] = listacarros[i];
p++;
}
}
return lista;
}
Ou, a próxima rotina. Muito mais simples, ocupa menos espaço, nao cria um novo Vector... só que... parece demasiado simples....
Este apenas acede ao vector ( ou stand ) directamente e procura os carros com Anos anteriores ao argumento dado ( int ano ), à medida que os encontra faz o print no ecrã! O resultado vai dar o mesmo se executar a classe de teste:::.
public void getCarrosAnterioresAnos(int ano){
for(int i = 0; i < numcarros; i++)
if (listacarros[i].getAno() <= ano)
System.out.println(listacarros[i]);
}
Não sei se fui explícito ou não... mas alguém sabe a diferença entre usar uma ou outra classe? Os resultados no ecrã são os mesmo.
