Array's por parametro [Resolvido]

3 respostas
Smokerox

Ola galera,

Então, estou tentando fazer uns teste aqui com Array's e na inserção e impressão esta tudo "Ok".
Agora fiz um novo exemplo contendo as classes "Pessoa" e "Empregado", porem os dados
são pré estabelecidos e meu vetor é passado por parametro, o problema é que não estou conseguindo
imprimir se quer um valor...

package VetorSimples1;

public class Pessoa {

	private String nome;
	private int idade;

	public Pessoa() {
		// Constructor default
	}

	public Pessoa(String nome, int idade) {
		this.nome = nome;
		this.idade = idade;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public int getIdade() {
		return idade;
	}

	public void setIdade(int idade) {
		this.idade = idade;
	}

	public String toString() {
		return String.format("Nome: %s\nIdade: %d", getNome(), getIdade());
	}

}



package VetorSimples1;

public class Empregado extends Pessoa {

	private double salario;
	private String empresa;

	public Empregado() {
		// Constructor default
	}

	public Empregado(String nome, int idade, double salario, String empresa) {
		super();
		this.salario = salario;
		this.empresa = empresa;
	}

	public double getSalario() {
		return salario;
	}

	public void setSalario(double salario) {
		this.salario = salario;
	}

	public String getEmpresa() {
		return empresa;
	}

	public void setEmpresa(String empresa) {
		this.empresa = empresa;
	}

	public String toString() {
		return String.format("%s\nSalario base: R$%.2f\n Empresa atual: %s",
				super.toString(), getSalario(), getEmpresa());
	}

}




package VetorSimples1;

public class Teste {
	
	public static void main(String[] args){
		
		Empregado emp1 = new Empregado("Carlos",22,600,"Home");
		Object[] vetor = null;
		
		Cadastra(emp1, vetor);
		Imprime(emp1, vetor);
		
	}

	public static void Cadastra(Empregado emp1, Object[] vetor){
		for(int i=0; i<vetor.length; ++i){
			emp1 = new Empregado();
			
			vetor[i] = emp1;
		}
	}
	public static void Imprime(Empregado emp1, Object[] vetor){
		
		for(int i=0; i<=vetor.length; ++i){
			
			System.out.println(vetor[i]);
		}
	}

}

A classe Teste mostrada logo acima, foi minha ultima tentativa
das demais que já fiz.
Sim, todos por Metodos.
Detalhe ainda me considero iniciante em java.
Porque do exemplo, verificar as possiveis formas de trabalhar com
array's.
Grato.

3 Respostas

rodpuc

Vamos lá, vc está cometendo vários erros… o principal é esse:

Object[] vetor = null;

está nulo, como vc pode colocar coisas nele? O “certo” seria

Object[] vetor = new Object[1];

observe que o certo está entre aspas pq vc está usando Object… POR QUE? O certo mesmo é:

Pessoa[] vetor = new Pessoa[1];

Mesmo assim essa solução não é ideal. O array tem um tamanho fixo (no caso 1) e o ideal era vc trabalhar com uma lista que cresce de acordo com o necessário. Pesquise sobre List e ArrayList.

Além disso, vc está sobrescrevendo o empregado q vc criou. Apague esta linha:

emp1 = new Empregado();

Outro erro q vc está cometendo: métodos se iniciam com letra minúscula, isso é uma convenção que deve sempre ser seguida. Portanto não é “Cadastra” e sim “cadastra”

EugenioMonteiro

Vi alguns problemas na função “cadastra”.
1º - Você inicia o vetor como null e passa como parâmetro da função, deveria ter instanciado como um vetor de Empregados;
2º - Dentro de “cadastra”, você tenta percorrer o vetor, porém ele é null, ou seja, não tem nenhuma posição.

EugenioMonteiro
public static void Cadastra(Empregado emp1, Object[] vetor){   
        for(int i=0; i<vetor.length; ++i){   
            emp1 = new Empregado();   // aqui o objeto que você passou por parâmetro é apagado e
                                                     //instanciado novamente em branco
               
            vetor[i] = emp1;   
        }

Você nem precisa dessa função cadastra, a forma mais simples seria:

Empregados vetor[]=new Empregados[10]; //ou qualquer outro número
     for (int i=0;i<vetor.lenght;i++){
      empregado=new Empregado();
      //set valores
      vetor[i]=empregado;
  
     }
Criado 22 de outubro de 2009
Ultima resposta 22 de out. de 2009
Respostas 3
Participantes 3