Elementos de uma matriz como objetos

3 respostas
T

Olá, bom dia. Quero que os elementos de uma matriz do meu código se tornem uma variável de referência de um objeto, e não variáveis primitivas.
Pois bem, consegui fazer isso de maneira manual, pegando os três elementos da minha matriz e declarando cada um como uma variável de referência de objeto. Mas isso não seria uma tarefa viável se fossem 100 elementos por exemplo. Por isso gostaria de fazer cada elemento virar uma variável de referência usando um “while” por exemplo. Vou mostrar o código abaixo.

class BooksTestDrive
{	
	public static void main ( String args [] )
	{
		Books myBooks [] = new Books [3];
		int x = 0;
		
		myBooks [0] = new Books ();
		myBooks [1] = new Books ();
		myBooks [2] = new Books ();
		
		myBooks[0].title = "The Grapes of Java";
		myBooks[1].title = "The Java Gatsby";
		myBooks[2].title = "The Java Cookbook";
		
		myBooks[0].author = "Bob";
		myBooks[1].author = "Sue";
		myBooks[2].author = "Ian";
		
		while ( x < 3 )
		{
			//myBooks [x] = new Books ();
			
			System.out.print( myBooks[x].title );
			System.out.print( " by " );
			System.out.println ( myBooks[x].author );
			x = x + 1;
		}
	}
}

A linha 22 que está comentada é o código que não funcionou. Gostaria de retirar a linha 8, 9 e a 10 e deixar a linha 22 ou algo parecido. Mas isso não é executado. Gostaria de saber o por quê. O que estaria errado, como fazer funcionar desta maneira. Abraços, espero ter sido claro.

3 Respostas

CristianPalmaSola10

Ao meu ver teria que ter funcionado normalmente…

Uma coisa isso naum é uma matriz sim uma lista eu recomento voce a usar a classe list e arraylist pois torna tudo mais facil

se voce quer uma matriz entao faça isso

Books mybooks[][] = new books[3][3];

se naum me engano a sintaxe é essa se naum for peço desculpas mas é algo assim e para declarar o seu arraylist se anum conhece pode pesquisar na net mas o basico é o seguinte…

List&lt;Books&gt; lista =  new ArrayList&lt;Books&gt;();
lista.add(new Books());//adicona mais um item na lista
lista.get(0);//retornara um objeto do tipo Books
viniciusalvess

Como se trade listas de objetos , independentemente se é multi-dimensional ou não , em java usa-se Collections Framework , que facilitará o desenvolvimento com relação o que precisa e com vantagem de usar generics .

A

O que acontence na linha 22 é vc ta criando um objeto pra uma variavel que ja foi atribuida a outro objeto(nas linhas 8,9,10). Isso vai fazer com que a variavel de referencia perca o objeto anterior e passe a referencia um novo objeto sem titulo e autor. Por isso que na hora de vc mostra o titulo e o autor vão da null.

O certo é vc criar um loop para instanciar os objetos antes de vc atribuir algo a eles.

Codigo correto:

class BooksTestDrive
{	
	public static void main ( String args [] )
	{
		Books myBooks [] = new Books [3];
		int x = 0;
		
	        for(int y=0;y<myBooks.length;y++){
                 myBooks[y] = new Books();
               }
		
		myBooks[0].title = "The Grapes of Java";
		myBooks[1].title = "The Java Gatsby";
		myBooks[2].title = "The Java Cookbook";
		
		myBooks[0].author = "Bob";
		myBooks[1].author = "Sue";
		myBooks[2].author = "Ian";
		
		while ( x < 3 )
		{
		
			System.out.print( myBooks[x].title );
			System.out.print( " by " );
			System.out.println ( myBooks[x].author );
			x = x + 1;
		}
	}
}
Criado 30 de novembro de 2012
Ultima resposta 30 de nov. de 2012
Respostas 3
Participantes 4