Como armazenar valores nesse Vetor(Array)

Pessoal esse é meu primeiro tópico, desculpa se estou fazendo algo errado.

Minha dúvida é a seguinte:

Estou fazendo um programa com a classe Pessoa, que recebe atributos nome, idade e altura privates. Fiz outra classe chamada Agenda e nela tenho que fazer um vetor que armazene as pessoas em 10 espaços desse vetor. Por fim devo testar no método main(principal).

Não estou sabendo armazenar as pessoas no vetor

Essa é a classe Pessoa:

[code]public class Pessoa
{
String nome;
int idade;
double altura;

public void setNome(String n)
{
    nome=n;
}
public String getNome()
{
    return nome;
}
public void setIdade(int i)
{
    idade=i;
}
public int getIdade()
{
    return idade;
}
public void setAltura(float a)
{
    altura=a;
}
public double getAltura()
{
    return altura;
}

}
[/code]

Está mais ou menos assim a classe Agenda:

[code]public class Agenda
{

Pessoa[] p = new Pessoa[10];






void armazenaPessoa(String nome, int idade, double altura)
{
    
     
     
     
     for(int x=0; x<p.length; x++)
    
         p[x] = p[x]; 

[/code]

Essa é a classe Principal, a testadora que contém o método main:

[code]public class Principal
{
public static void main (String[] args)
{

    Agenda a1 = new Agenda();
    a1.imprimeAgenda();
    a1.armazenaPessoa("João", 30, 1.70);  
   
    
     
    
    
    
    
    
    
}

}
[/code]

Alguém pode me dar qualquer dica? Desde já agradeço!

não seria melhor você usar um ArrayList?

Luan estou aprendendo Java ainda, nunca usei ArrayList. Como ficaria ? Você tem alguma outra idéia com base nesse código?

Valeu!

Exemplo de um ArrayList

[code]package forum;
import java.util.ArrayList;
public class Pessoa{

public static void main(String[] arr){  
   
	ArrayList lista = new ArrayList();
	lista.add("pessoa 1");
	lista.add("pessoa 2");
	lista.add("pessoa 3");
	lista.add("pessoa 4");
	lista.add("pessoa 5");
	lista.add("pessoa 6");
	lista.add("pessoa 7");
	lista.add("pessoa 8");
	lista.add("pessoa 9");
	lista.add("pessoa 10");
	
	while (!lista.isEmpty()){
		System.out.println(lista.remove(0));
	}
    
            
}  

}
[/code]
Espero que ajude.
Abraços

[quote=leandrow3b]Exemplo de um ArrayList

[code]package forum;
import java.util.ArrayList;
public class Pessoa{

public static void main(String[] arr){  
   
	ArrayList lista = new ArrayList();
	lista.add("pessoa 1");
	lista.add("pessoa 2");
	lista.add("pessoa 3");
	lista.add("pessoa 4");
	lista.add("pessoa 5");
	lista.add("pessoa 6");
	lista.add("pessoa 7");
	lista.add("pessoa 8");
	lista.add("pessoa 9");
	lista.add("pessoa 10");
	
	while (!lista.isEmpty()){
		System.out.println(lista.remove(0));
	}
    
            
}  

}
[/code]
Espero que ajude.
Abraços[/quote]

leandrow3b obrigado pela atenção cara.

Mas para adicionar essas pessoas também é preciso ter além do nome, idade e altura. Como isso se encaixaria nesse código?
Tu acha provável uma solução apenas com um vetor ? pois no método principal eu iria digitar nome, idade e altura.

No momento só está aparecendo valor nulo __ “null” nas dez posições

Ai está um exemplo do jeito mais simples…

[code]public class Pessoa {

private String nome;
private int idade;
private float altura;

/**
 * Construtor
 * @param nome
 * @param idade
 * @param altura
 */
public Pessoa(String nome, int idade, float altura) {
	super();
	this.nome = nome;
	this.idade = idade;
	this.altura = altura;
}
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 float getAltura() {
	return altura;
}
public void setAltura(float altura) {
	this.altura = altura;
}

}[/code]

///////

[code]public class main {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub
	
	ArrayList<Pessoa> agenda = new ArrayList<>();
	
	agenda.add(new Pessoa("João", 30, 1.70f));
	
}

}[/code]

Espero ter ajudado!

[quote=Luan Kevin]Ai está um exemplo do jeito mais simples…

[code]public class Pessoa {

private String nome;
private int idade;
private float altura;

/**
 * Construtor
 * @param nome
 * @param idade
 * @param altura
 */
public Pessoa(String nome, int idade, float altura) {
	super();
	this.nome = nome;
	this.idade = idade;
	this.altura = altura;
}
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 float getAltura() {
	return altura;
}
public void setAltura(float altura) {
	this.altura = altura;
}

}[/code]

///////

[code]public class main {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub
	
	ArrayList<Pessoa> agenda = new ArrayList<>();
	
	agenda.add(new Pessoa("João", 30, 1.70f));
	
}

}[/code]

Espero ter ajudado!
[/quote]

Luan Kevin te agradeço novamente meu caro.

Mas é o seguinte eu estou tentando colocar o Array em um método, que depois ira ser chamado na classe Principal entende?

[code]public class Agenda {

ArrayList<Pessoa> listaPessoa = new ArrayList<>();

void armazenaPessoa(String nome, int idade, float altura) {
	listaPessoa.add(new Pessoa(nome, idade, altura));
}

}[/code]

p[code]ublic class main {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub
	
	Agenda a1 = new Agenda();
	
	a1.armazenaPessoa("João", 30, 1.70f);
}

}[/code]

seria isso?

Tenta assim:

[code]public class Agenda
{

private Pessoa[] p = new Pessoa[10];
private int indice = 0;      
  
void armazenaPessoa(String nome, int idade, double altura)  
{  
     p[++indice] = new Pessoa(nome, idade, altura);
} 

}
[/code]

e na classe Pessoa cria um construtor.

public Pessoa(String n, int i, double alt) {
  nome = n;
  idade = i;
  altura = alt
}

Mas aí não esquece de verificar se vc já não estourou o array.
Por isso, com uma lista ficaria mais simples, já que a alocação é dinâmica e não estática. =P
Ve aí se ajuda.

[quote=Luan Kevin][code]public class Agenda {

ArrayList<Pessoa> listaPessoa = new ArrayList<>();

void armazenaPessoa(String nome, int idade, float altura) {
	listaPessoa.add(new Pessoa(nome, idade, altura));
}

}[/code]

p[code]ublic class main {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub
	
	Agenda a1 = new Agenda();
	
	a1.armazenaPessoa("João", 30, 1.70f);
}

}[/code]

seria isso?[/quote]

Valeu pela resposta cara, mas não pegou aqui. Não sei pq!

[quote=felipeaps]Tenta assim:

[code]public class Agenda
{

private Pessoa[] p = new Pessoa[10];
private int indice = 0;      
  
void armazenaPessoa(String nome, int idade, double altura)  
{  
     p[++indice] = new Pessoa(nome, idade, altura);
} 

}
[/code]

e na classe Pessoa cria um construtor.

public Pessoa(String n, int i, double alt) {
  nome = n;
  idade = i;
  altura = alt
}

Mas aí não esquece de verificar se vc já não estourou o array.
Por isso, com uma lista ficaria mais simples, já que a alocação é dinâmica e não estática. =P
Ve aí se ajuda.[/quote]

felipeaps obrigado pela resposta. Dessa forma deu certo, mas quando imprimo aparece um monte de letras embaralhadas assim: [LPessoa;@187aeca

Como vc está imprimindo?

Ta mandando imprimir o objeto direto né? Assim não rola mesmo.

Ou vc imprime atributo por atributo, ou sobreescreve o metodo toString na classe Aluno.

felipeaps

Mas se eu imprimir atributo por atributo tbm não pode, pois o método de origem é vazio.

Não pega assim!

Posta seu método listar aí.

Aqui está o método Agenda

[code]public class Agenda
{

 public Pessoa[] p = new Pessoa[10];  
    public int indice = 0;

void armazenaPessoa(String nome, int idade, double altura)
{
p[++indice] = new Pessoa(nome, idade, altura);

}       



     
        

void imprimeAgenda()
{
    System.out.println();       
    
}

}[/code]
E aqui o método principal

[code]public class Principal
{
public static void main (String[] args)
{
Agenda p = new Agenda();

    System.out.println( p.armazenaPessoa ("José", 30 , 1.70) ); [/code]

Está todo desorganizado mas vou fazer os outros métodos e organizar

Aqui está o método Agenda

[code]public class Agenda
{

 public Pessoa[] p = new Pessoa[10];  
    public int indice = 0;

void armazenaPessoa(String nome, int idade, double altura)
{
p[++indice] = new Pessoa(nome, idade, altura);

}       



     
        

void imprimeAgenda()
{
    System.out.println();       
    
}

}[/code]
E aqui o método principal

[code]public class Principal
{
public static void main (String[] args)
{
Agenda p = new Agenda();

    System.out.println( p.armazenaPessoa ("José", 30 , 1.70) ); [/code]

Está todo desorganizado mas vou fazer os outros métodos e organizar[/quote]

Seu método para imprimir não faz nada, apenas imprime uma linha em branco…

Vamo lá… Vc tem um vetor com 10 posições e tem o número de posições ocupadas desse veotor (que é a variável indice).

Para imprimir a agenda vc precisa imprimir todas as posições ocupadas do vetor certo?

Por exemplo para imprimir a posição 0 do vetor como vc faria? Algo do tipo.

 System.out.println(p[0].getNome() + " " + p[0].getIdade() + " " + p[0].getAltura()); 

Certo? Agora pensa aí como vc poderia fazer para imprimir todas as posições. Tenta faze e depois fala o que deu.

Aqui está o método Agenda

[code]public class Agenda
{

 public Pessoa[] p = new Pessoa[10];  
    public int indice = 0;

Eu já tinha conseguido fazer, mas mesmo assim obrigado cara. Você é gente boa, Valeuuu!

void armazenaPessoa(String nome, int idade, double altura)
{
p[++indice] = new Pessoa(nome, idade, altura);

}       



     
        

void imprimeAgenda()
{
    System.out.println();       
    
}

}[/code]
E aqui o método principal

[code]public class Principal
{
public static void main (String[] args)
{
Agenda p = new Agenda();

    System.out.println( p.armazenaPessoa ("José", 30 , 1.70) ); [/code]

Está todo desorganizado mas vou fazer os outros métodos e organizar[/quote]

Seu método para imprimir não faz nada, apenas imprime uma linha em branco…

Vamo lá… Vc tem um vetor com 10 posições e tem o número de posições ocupadas desse veotor (que é a variável indice).

Para imprimir a agenda vc precisa imprimir todas as posições ocupadas do vetor certo?

Por exemplo para imprimir a posição 0 do vetor como vc faria? Algo do tipo.

 System.out.println(p[0].getNome() + " " + p[0].getIdade() + " " + p[0].getAltura()); 

Certo? Agora pensa aí como vc poderia fazer para imprimir todas as posições. Tenta faze e depois fala o que deu.[/quote]