Estrutura de Dados em java

:cry: Eu tenho um classe No, que possui um atributo ombrodireito que é um vetor de float. Ao instaciar objeto desta classe preciso armazenar dentro de outro vetor.
Fiz o seguinte codigo, mas nao está dando certo e queria uma ajuda para resolver meu problema.

to fazendo o programa da seguinte maneira:

public class Nodo
{
float[] ombroD = new float[4];

public static void main(String args[])
{
Nodo[] nodo = new Nodo[4];

nodo[0].ombroD[0]=1.0f;
nodo[0].ombroD[1]=0.0f;
nodo[0].ombroD[2]=1.0f;		
nodo[0].ombroD[3]=1.0f;
System.out.println("x=" + nodo[0].ombroD[0] + "Y=" + nodo[0].ombroD[1] + "z=" + nodo[0].ombroD[2] + "ang=" + nodo[0].ombroD[3] + "\n");

nodo[1].ombroD[0]=2.0f;
nodo[1].ombroD[1]=0.0f;
nodo[1].ombroD[2]=1.0f;		
nodo[1].ombroD[3]=1.0f;
System.out.println("x=" + nodo[1].ombroD[0] + "Y=" + nodo[1].ombroD[1] + "z=" + nodo[1].ombroD[2] + 	 "ang=" + nodo[1].ombroD[3] + "\n");

}

}

se alguem puder me dar uma sugestao eu agradeco

Olá macgyver…

o problema é o seguinte, quando você está alocando um array de refêrencias (tipos não primitivos) com o operador new, cada elemento deste array recebe uma referência NULL, ou seja, não aponta para nenhuma instância do objeto.

na verdade, ele não cria as instância do objeto para você, ele simplemente cria espaços de referências.

o que você deve fazer é instanciar cada Nodo separadamente mesmo,
e se quiser, o que acho improvável, é referenciar cada elemento do array criado para estas instâncias de Nodo.

espero ter ajudado, :wink:
Abraços.

em código as soluções são:

nesta primeira, é criado o array com cada elemento referenciando novas instâncias de Nodo.

public class Nodo {
	public float[] ombroD = new float[4];

	public static void main(String args[]) {
		Nodo[] nodo = {new Nodo(), new Nodo(), new Nodo(), new Nodo()};

		nodo[0].ombroD[1]=0.0f;
		nodo[0].ombroD[2]=1.0f;
		nodo[0].ombroD[3]=1.0f;

		System.out.println("x=" + nodo[0].ombroD[0] + "Y=" + nodo[0].ombroD[1] + "z=" + nodo[0].ombroD[2] + "ang=" + nodo[0].ombroD[3] + "\n");

		nodo[1].ombroD[0]=2.0f;
		nodo[1].ombroD[1]=0.0f;
		nodo[1].ombroD[2]=1.0f;
		nodo[1].ombroD[3]=1.0f;

		System.out.println("x=" + nodo[1].ombroD[0] + "Y=" + nodo[1].ombroD[1] + "z=" + nodo[1].ombroD[2] + "ang=" + nodo[1].ombroD[3] + "\n");
	}
}

nesta segunda, é instanciado cada objeto de Nodo separadamente.

public class Nodo {
	public float[] ombroD = new float[4];

	public static void main(String args[]) {
		Nodo nodo1 = new Nodo();
		Nodo nodo2 = new Nodo();
		Nodo nodo3 = new Nodo();
		Nodo nodo4 = new Nodo();



		nodo1.ombroD[1]=0.0f;
		nodo1.ombroD[2]=1.0f;
		nodo1.ombroD[3]=1.0f;

		System.out.println("x=" + nodo1.ombroD[0] + "Y=" + nodo1.ombroD[1] + "z=" + nodo1.ombroD[2] + "ang=" + nodo1.ombroD[3] + "\n");

		nodo2.ombroD[0]=2.0f;
		nodo2.ombroD[1]=0.0f;
		nodo2.ombroD[2]=1.0f;
		nodo2.ombroD[3]=1.0f;

		System.out.println("x=" + nodo2.ombroD[0] + "Y=" + nodo2.ombroD[1] + "z=" + nodo2.ombroD[2] + "ang=" + nodo2.ombroD[3] + "\n");
	}
}

:wink: