Problemas com Array

Estou com dificuldades em ressolver um probleminha com array , eu tenho este metodo para adicionar na array :

public void adiciona( Aluno x )
{
if(this.contador < 100)
{
this.aluno[this.contador] = x;
{
System.out.printf("%3s%17s\n" , contador , aluno[contador].nome);
}
this.contador ++;
}
}

ao fazer um teste de saida , por exemplo : System.out.printf("%3s%17s\n" , contador , aluno[0].nome); imprime na tela somente o primeiro registro , ao colocar System.out.printf("%3s%17s\n" , contador , aluno[1].nome); gera erro de execução. Ficarei muito grato com a ajuda dos amigos do forum. Obrigado.

Segue as demais classes

class Aluno
{
String nome;
String snome;
int date;

}

class listaArray
{
public static void main ( String [] args )
{
Lista lista = new Lista ();

Aluno x1 = new Aluno( );
x1.nome = “Denilson”;
lista.adiciona(x1);

Aluno x2 = new Aluno( );
x2.nome = “Marcos”;
lista.adiciona(x2);

Aluno x3 = new Aluno( );
x3.nome = “Carlos”;
lista.adiciona(x3);

Aluno x4 = new Aluno();
x4.nome = “Sandro”;
lista.adiciona(x4);

Aluno x5 = new Aluno();
x5.nome = “Mauricio”;
lista.adiciona(x5);

Aluno x6 = new Aluno();
x6.nome = “Marcio”;
lista.adiciona(x6);

}
}

Orientação a Objetos. :smiley:

Quando vc cria um objeto aluno tbm é criado um vetor para esse aluno. Isso acontece porque o pq vertor foi declarado dentro da classe aluno.

Aluno x1 = new Aluno( ); // aqui vc cria um aluno com seu proprio vetor x1.nome = "Denilson"; // aqui vc adiciona no vetor do aluno x1. lista.adiciona(x1);

Aluno x2 = new Aluno( );// aqui vc cria um aluno com seu proprio vetor (outro vetor) x2.nome = "Marcos";// aqui vc adiciona no vetor do aluno x2. lista.adiciona(x2);

Quando vc acessa uma x1.vetor[1] vai ser disparada uma IndexOutofBoundsException pq essa posição não existe.
certo?

Muito obrigado ,entendi a explicação, mas eu passei os codigos de forma errada , o metodo adiciona está na classe lista, e nsse caso eu fiz novos testes e gera a mesma saida, uma posição com todas as referencias,

class Lista
{
private Aluno [] aluno;
private int contador;

//public listaArray ();

  {
   this.aluno = new Aluno[100];
   System.out.println("Tamanho da Array :\n" + this.aluno.length);
   System.out.printf("%5s%14s\n\n" , "INDEX" , "VALUE");
  }

 
    public void adiciona( Aluno x )
      {
         if(this.contador < 100)
           {
            this.aluno[this.contador] = x;
              
             {
               System.out.printf("%3s%17s\n" , contador , aluno[contador].nome);
               } 
               
             this.contador ++;
           }
      }

}

class listaArray
{
public static void main ( String [] args )
{
Lista lista = new Lista ();

Aluno x1 = new Aluno( );
x1.nome = “Denilson”;
lista.adiciona(x1);

Aluno x2 = new Aluno( );
x2.nome = “Marcos”;
lista.adiciona(x2);

Aluno x3 = new Aluno( );
x3.nome = “Carlos”;
lista.adiciona(x3);

Aluno x4 = new Aluno();
x4.nome = “Sandro”;
lista.adiciona(x4);

Aluno x5 = new Aluno();
x5.nome = “Mauricio”;
lista.adiciona(x5);

Aluno x6 = new Aluno();
x6.nome = “Marcio”;
lista.adiciona(x6);

}
}

class Aluno
{
String nome;
String snome;
int date;

}

Primeiramente, coloque seu código entre as tags code. As pessoas vão pensar 2x antes de te ajudar com o código mal formatado.

Pesquise sobre Construtores. Dentro do construtor de Lista é que você vai instanciar o array de alunos e o contador. Acredito que depois disso, seu código vai funcionar. Além disso, sempre que você vai listar os alunos, você instancia um novo array… Então não vai ter nada dentro dele.
Algo como isso:

[code]
class Lista {
private Aluno [] aluno;
private int contador;

public Lista() {
	this.aluno = new Aluno[100];
	this.contador = 0;
}

public listaArray () { 
	System.out.println("Tamanho da Array :\n" + this.aluno.length); 
	System.out.printf("%5s%14s\n\n" , "INDEX" , "VALUE"); 
} 


public void adiciona( Aluno x ) { 
	if(this.contador < 100) { 
		this.aluno[this.contador] = x;
		System.out.println(this.contador + ": " + x);
	}
	this.contador ++;
} 

}[/code]
E dê uma lida em Orientação a Objetos que tudo vai ficar mais fácil…

[quote=Andre Brito]Primeiramente, coloque seu código entre as tags code. As pessoas vão pensar 2x antes de te ajudar com o código mal formatado.

Pesquise sobre Construtores.
E dê uma lida em Orientação a Objetos que tudo vai ficar mais fácil…
[/quote]
importantíssimo

System.out.printf("%5s%14s\n\n"  , "INDEX" , "VALUE");  

juro q n entendi o %5s%14s
testei aqui antes de perguntar mas saiu nada, só os devidos caracteres

Obrigado á todos , vou fazer as devidas alterações.

[quote=Magno_LC] System.out.printf("%5s%14s\n\n" , "INDEX" , "VALUE");

juro q n entendi o %5s%14s
testei aqui antes de perguntar mas saiu nada, só os devidos caracteres[/quote]
http://java.sun.com/docs/books/tutorial/essential/io/formatting.html

Quer dizer que o primeiro parâmetro deve ser interpretado como String e deve ocupar ao menos 5 caracteres (com espaços adicionados, caso necessário). O mesmo para o segundo, só que com 14 casas.

vlw Marco

entendi!

Boas, sou iniciante em java. Quero saber se é possivel fazer este tipo de exercicio

class ComparisonDemo {
public static void main(String[] args){
int value1 = 1;
int value2 = 2;
if(value1 == value2)
System.out.println(“value1 == value2”);
if(value1 != value2)
System.out.println(“value1 != value2”);
}
}

mas em que um dos valores, por exemplo o value1 seja uma variavel? queria criar um array de comprimento x qualquer, que quando comparado diga antes de chegar ao fim do array acontece ‘resultado1’ mas quando chega ao fim ai ja da o resultado2 (mas so quando se chega ao ultimo valor do array). Ainda nao sei como é que a variavel vai obter valores mas para ja queria saber se isto era possivel.

agradeço desde ja qualquer dica que possam dar, cumprimentos