[RESOLVIDO]Problema com vetor de objetos

3 respostas
R

Boa noite pessoal.
Estou com uma dúvida sobre vetores de objetos e gostaria que me ajudassem, por favor.
No código abaixo, gostaria que o vetor mostrado fosse o criado na classe "Numero" pelo método "cria_vetor". O problema é que quando este método "morre", acho que a referência ao vetor que ele criou morre também, gostaria de saber como faço para resolver este problema. Obrigado.

//Arquivo Numero.java
import java.util.Random;

public class Numero
{
	public int val;
	public float acum;
	
	public Numero(int val, float acum)
	{
		this.val = val;
		this.acum = acum;
	}

	public Numero[] cria_vetor()
	{
		Numero vet[] = new Numero[8];
		Random rand = new Random();
		for(int i=0; i<vet.length; i++)
		{
			vet[i] = new Numero(rand.nextInt(10), 1);// Cria o vetor com numeros quaisquer.
		}
		return vet;
	}
}
//Arquivo Main.java
public class Main
{
	public static void main(String[] args)
	{
		Numero vetor[] = new Numero[8];
		for(int i=0; i<vetor.length; i++)
		{
			vetor[i] = new Numero(0,0);
		}

		vetor[0].cria_vetor();// Chama o método para criar o vetor.

		for(int i=0; i<vetor.length; i++)
		{     // O vetor mostrado aqui é o que tem (0,0) como argumentos, não o com valores aleatórios.
			System.out.print("( "+vetor[i].val+" - "+vetor[i].acum+" )");
		}
		System.out.println();
	}
//Fim da classe.
}

3 Respostas

ViniGodoy

O certo seria fazer assim:

//Arquivo Numero.java
import java.util.Random;

public class Numero {
	public int val;
	public float acum;
	
	public Numero(int val, float acum) {
		this.val = val;
		this.acum = acum;
	}

	public static Numero[] cria_vetor() {
		Numero vet[] = new Numero[8];
		Random rand = new Random();
		for(int i=0; i&lt;vet.length; i++) {
			vet[i] = new Numero(rand.nextInt(10), 1);// Cria o vetor com numeros quaisquer.
		}
		return vet;
	}
}
//Arquivo Main.java
public class Main {
	public static void main(String[] args) {
		Numero vetor[] = Numero.criaVetor();
		for(int i=0; i&gt;&lt;vetor.length; i++) {     
			System.out.print("( "+vetor[i].val+" - "+vetor[i].acum+" )");
		}
		System.out.println();
	}
//Fim da classe.
}
>
R
ViniGodoy:
O certo seria fazer assim:
//Arquivo Numero.java
import java.util.Random;

public class Numero {
	public int val;
	public float acum;
	
	public Numero(int val, float acum) {
		this.val = val;
		this.acum = acum;
	}

	public static Numero[] cria_vetor() {
		Numero vet[] = new Numero[8];
		Random rand = new Random();
		for(int i=0; i&lt;vet.length; i++) {
			vet[i] = new Numero(rand.nextInt(10), 1);// Cria o vetor com numeros quaisquer.
		}
		return vet;
	}
}
//Arquivo Main.java
public class Main {
	public static void main(String[] args) {
		Numero vetor[] = Numero.criaVetor();
		for(int i=0; i&gt;&lt;vetor.length; i++) {     
			System.out.print("( "+vetor[i].val+" - "+vetor[i].acum+" )");
		}
		System.out.println();
	}
//Fim da classe.
}
>

Nem em um milhão de tentativas eu iria descobrir isto.

Muito obrigado.

R

ViniGodoy, você poderia olhar um outro tópico que postei hoje detarde para ver se a resposta de um cara está mesmo correta?

Agradeço desde já.

Criado 8 de janeiro de 2013
Ultima resposta 8 de jan. de 2013
Respostas 3
Participantes 2