[ERRO] Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0[RESOLVIDO]

33 respostas
rafa.spimenta

Eu estou fazendo uma trabalho de faculdade onde devo armazer algumas informaçoes sobre DVDs e exibilas na tela posteriormente, no intanto esta aparecendo o seguinte erro:

<blockquote>Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0

at Dvd.cadastraDvd(Dvd.java:81)

at TextDvd.main(TextDvd.java:12)

</blockquote>

Segue o codigo completo da classe:

//Programa armazena informações de DVDs e exibe na tela.

import java.util.Scanner;

public class Dvd 
{
	int x=0;
	String[] titulo = new String[x]; 
	String[] genero = new String[x];
	int[] copias = new int[x];
	int[] codigo = new int[x];
	
	public void setTitulo( String[] titulo1)
	{
		titulo = titulo1;
	}
	
	public String[] getTitulo()
	{
		return titulo;
	}//fim set e get
	
	public void setGenero( String[] genero1)
	{
		genero = genero1;
	}
	
	public String[] getGenero()
	{
		return genero;
	}//end set get genero
	
	public void setCopias( int[] copias1)
	{
		copias = copias1;
	}
	
	public int[] getCopias()
	{
		return copias;
	}//end set get copias
	
	public void setCodigo( int[] codigo1)
	{
		codigo = codigo1;
	}
	
	public int[] getCodigo()
	{
		return codigo;
	}//end set get codigo
	
	public void setContador( int contador1)
	{
		x = contador1;
	}
	
	public int getContador()
	{
		return x;
	}//end set get x
	
	public void cadastraDvd()
	{
		Scanner input = new Scanner(System.in);
		
		System.out.print("Quantos DVDs deseja cadastrar? ");
			x = input.nextInt();
			
			for( int j = 0 ; j < x ; j++ )
			{
				String[] titulo2 = new String[j]; 
				String[] genero2 = new String[j];
				int[] copias2 = new int[j];
				int[] codigo2 = new int[j];
				
				codigo2[j] = j+100;//gerando codigo do dvd
				setCodigo(codigo2);//gerando codigo do dvd
				
				System.out.print("Entre com o numero de copias que o DVD possuir: ");
				copias2[j] = input.nextInt();
				setCopias( copias2 );
				
				
				System.out.print("Digite o título do filme: ");
				titulo2[j] = input.nextLine();
				setTitulo( titulo2 );
				
				System.out.print("Escolha o nº que corresponde ao gênero do filme: ");
				System.out.print("1-Ação; 2-Romance; 3-Comédia; 4-Terror ");
				genero2[j] = input.nextLine();
				setGenero( genero2 );
				
				 if ( genero[j] .equals("1") )
				 	{
					 	genero[j] = "Ação"; 
				 	}
				 else 
					 if ( genero[j].equals("2") )
					 	{
						 	genero[j] = "Romance"; 
					 	}
					 else 
						 if ( genero[j].equals("3") )
						 	{
							 	genero[j] = "Comédia"; 
						 	}
						 else 
							 if ( genero[j].equals("4") )
							 	{
								 	genero[j] = "Terror"; 
							 	}
				 
					 else 
						 System.out.print("Opção Invalida. \n\n"); 
				

			}//end for
	}//end method cadastra dvd
			
			public void exibeDvd()
			{
				for(int y =0; y<getContador(); y++)
				System.out.println("Os Dvds cadastrados são:");
				System.out.printf("Código: %d; Título: %s; Gênero: %s; " +
						"Número de Cópias: %d \n", codigo[getContador()],
						titulo[getContador()], genero[getContador()],copias[getContador()] );
			}//end method exibeDvd
		
}//end class

classe main:

public class TextDvd {


	public static void main(String[] args) 
	{
		Dvd chamaDvd = new Dvd();
		
		System.out.print("Dvd-Locadora \n© 2008 Minas Hacker's Informática \nVersão 1.0 \nTodos os direitos reservados" +
		" \nUso exclusivo da DVD Now S/A \n\nBem-Vindo!\n\n");     

		chamaDvd.cadastraDvd();
		chamaDvd.exibeDvd();
	}
}

Estou tentado resolver mas ainda nao consegui

33 Respostas

P

Nao tive paciencia pra ler o codigo todo, mas no inicio ja vi o provavel erro.

Cara, nota só. Você tá criando um array com tamanho zero. Isso é impossivel. Quando você declarou a variavel X você inicializou ela com o valor 0.

CintiaDR

Certamente é esse seu X sendo 0, como disse o Sérgio 8)

rafa.spimenta

vo dar uma olha aki, vlw

copia e cola o codigo ae q vai rodar ate chegar no erro!

rafa.spimenta

eu nao declarei valor para x.

e o erro foi o mesmo:

Todos os direitos reservados
Uso exclusivo da DVD Now S/A

Bem-Vindo!

Quantos DVDs deseja cadastrar? 10

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0

at Dvd.cadastraDvd(Dvd.java:77) (eh essa linha>> chamaDvd.cadastraDvd()<img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=9" title=":wink:" class="emoji" alt=":wink:">

at TextDvd.main(TextDvd.java:12) (eh essa linha>> chamaDvd.cadastraDvd()<img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=9" title=":wink:" class="emoji" alt=":wink:">

</blockquote>
T

cara, porque vc cria as instâncias dentro do FOR? acho que sua idéia seria jogar as informações dentro dos vetores a cada passagem do FOR, porém vc está fazendo a instância de TITULO, GENERO, COPIAS2 E CODIGO2 a cada iteração do FOR. Sugiro que trocasse aqueles iF’s / ELSE por um switch

switch(genero[j]){

case "1": genero[j] = "Ação"; break;
case "2": genero[j] = "Romance"; break;
case "3": genero[j] = "Comédia"; break;
case "4": genero[j] = "Terror"; break;

}

sugiro que não use a mesma variável para a escolha e para setar o valor

Sugiro que revise esse código abaixo:

/* se vc colocar x==0, vc diz que essa variavel nao recebe valor, logo os sets nao poderão ser executados   */

    int x=0;
    String[] titulo = new String[x];   
    String[] genero = new String[x];   
    int[] copias = new int[x];   
    int[] codigo = new int[x];   
       
    public void setTitulo( String[] titulo1)   
    {   
        titulo = titulo1;   
    }

eu faria dessa forma

String[] titulo;
       
    public void setTitulo( String[] titulo1)   
    {   
        titulo = titulo1;   
    }  
    .
    .
    .

se vc tem um método que seta a variável Titulo, não precisa instanciar ela. Porém vc deve ter ela instanciada em outra classe.

isso tá me parecendo um Ctrl C , Ctrl V de algum lugar…

da uma olhada se isso pode ajudar a solucionar…

T

rafa-projeseg:
eu nao declarei valor para x.

e o erro foi o mesmo:

Todos os direitos reservados
Uso exclusivo da DVD Now S/A

Bem-Vindo!

Quantos DVDs deseja cadastrar? 10

Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 0

at Dvd.cadastraDvd(Dvd.java:77)

at TextDvd.main(TextDvd.java:12)

</blockquote></blockquote>
int x=0;   
    String[] titulo = new String[x];     
    String[] genero = new String[x];     
    int[] copias = new int[x];     
    int[] codigo = new int[x];     
         
    public void setTitulo( String[] titulo1)     
    {     
        titulo = titulo1;     
    }

amigo esse é seu código…vc ta jogando 0 em x…

CintiaDR

Não, é?

int x=0;

E isto é o que?? hihihihi

rafa.spimenta


Thiago Domingues

cara, porque vc cria as instâncias dentro do FOR? acho que sua idéia seria jogar as informações dentro dos vetores a cada passagem do FOR, porém vc está fazendo a instância de TITULO, GENERO, COPIAS2 E CODIGO2 a cada iteração do FOR

eu tirei as declaraçoes para fora do for, porem, porem o erro continua:

public void cadastraDvd()
	{

		int x2;
		int j =0;
		int[] copias2 = new int[j];
		int[] codigo2 = new int[j];
		String[] titulo2 = new String[j]; 
		String[] genero2 = new String[j];

		
		Scanner input = new Scanner(System.in);
		
		System.out.print("Quantos DVDs deseja cadastrar? ");
			x2 = input.nextInt();
			setContador(x2);
			
			
			for(j = 0 ; j < x ; j++ )
			{
...

estou trocando o if por swith!
teve um pouco d c+c e c+v d poucas partes d um programa parecido q eu tinha feito a uns 2 meses atraz! rsr, mas a maioria eu comecei agora…

vlw pela ajuda!

CintiaDR: eu eu coloquei o x=0, mas o erro perciste! obrigado!! (o mesmo erro!)

T

cara, tenta fazer o que eu postei no meu código, ao inves de instanciar a string nessa classe, ela só recebe a string pelo método Set, não há a necessidade de vc instanciar nessa classe se vc ta recebendo…vc não pode fazer X = 0

mais uma vez, faça isso

String[] titulo;

public void setTitulo(String[] titulo){
   this.titulo = titulo;
}

ao inves disso

String[] titulo = new String[x];

public void setTitulo(String[] titulo){
   this.titulo = titulo;
}
CintiaDR

Pra você entender o problema vou colocar um exemplo:

final static int UM_NUMERO_GIGANTESCO=1000000;  

String[] titulo = new String[UM_NUMERO_GIGANTESCO];   
String[] genero = new String[UM_NUMERO_GIGANTESCO];  
int[] copias = new int[UM_NUMERO_GIGANTESCO];  
int[] codigo = new int[UM_NUMERO_GIGANTESCO];

Onde UM_NUMERO_GIGANTESCO é sua quantidade máxima de itens nos arrays!

Se vc tentar acessar:

String str = titulo[UM_NUMERO_GIGANTESCO];

ou

String str = titulo[UM_NUMERO_GIGANTESCO + 1];

Ou qualquer valor maior ou igual a UM_NUMERO_GIGANTESCO vai dar este erro. Dê uma procurada no Oráculo a respeito de [google]ArrayIndexOutOfBoundsException[/google]

— Editado —
Depois que vc entender, e quiser um array de tamanho dinâmico por alguma razão, busque por [google]Arraylist[/google]

T

cara, um Array em Java começa sempre pelo índice ZERO. ou seja.

String[] teste = new String[10]

seu índice vai de ZERO a NOVE...........

teste[0]
teste[1]
teste[2]
teste[3]
teste[4]
teste[5]
teste[6]
teste[7]
teste[8]
teste[9]

todos que postaram aqui nesse tópico estão dizendo a mesma coisa…será que somos nós que precisamos olhar esse link???

rafa.spimenta
Thiago Domingues:
cara, um Array em Java começa sempre pelo índice ZERO. ou seja.
String[] teste = new String[10]

seu índice vai de ZERO a NOVE...........

teste[0]
teste[1]
teste[2]
teste[3]
teste[4]
teste[5]
teste[6]
teste[7]
teste[8]
teste[9]

todos que postaram aqui nesse tópico estão dizendo a mesma coisa.....será que somos nós que precisamos olhar esse link?????????

Eu fiz conforme vc sujerio! e sobre o array eu ja tinha mudado! mas continua dando o mesmo problema!

no entando depois desta ultima mudando meus array n estao sendo iniciados, conforme segue abaixo:
//Programa armazena informações de DVDs e exibe na tela.

import java.util.Scanner;

public class Dvd 
{
	int x;
	String[] titulo; 
	int[] genero;
	String[] generoReal;
	int[] copias;
	int[] codigo;
	
	public void setTitulo( String[] titulo1)
	{
		this.titulo = titulo1;
	}
	
	public String[] getTitulo()
	{
		return titulo;
	}//end set get titulo
	
	public void setGeneroReal( String[] genero2)
	{
		this.generoReal = genero2;
	}
	
	public String[] getGeneroReal()
	{
		return generoReal;
	}//end set get generoReal
	
	public void setCopias( int[] copias1)
	{
		this.copias = copias1;
	}
	
	public int[] getCopias()
	{
		return copias;
	}//end set get copias
	
	public void setCodigo( int[] codigo1)
	{
		this.codigo = codigo1;
	}
	
	public int[] getCodigo()
	{
		return codigo;
	}//end set get codigo
	
	public void cadastraDvd()
	{
		Scanner input = new Scanner(System.in);
		
		System.out.print("Quantos DVDs deseja cadastrar? ");
			x = input.nextInt();
				
			for(int j = 0 ; j < x ; j++ )
			{
				codigo[j] = j+100;
				
				System.out.print("Entre com o numero de copias que o DVD possuir: ");
				copias[j] = input.nextInt();
				
				System.out.print("Digite o título do filme: ");
				titulo[j] = input.nextLine();
				
				System.out.print("Escolha o nº que corresponde ao gênero do filme: ");
				System.out.print("1-Ação; 2-Romance; 3-Comédia; 4-Terror ");
				genero[j] = input.nextInt();
				
				switch(genero[j])
				{   
					case '1': generoReal[j] = "Ação"; break;   
					case '2': generoReal[j] = "Romance"; break;   
					case '3': generoReal[j] = "Comédia"; break;   
					case '4': generoReal[j] = "Terror"; break;   
				}//end switch  
			}//end for
	}//end method cadastra dvd
}//end class

devo voltar a declarar os vetores assim: String[] = teste = new String[10]?

ou deixar cmo esta: String[] teste;
?

rafa.spimenta

O programa postado acima continua dando erro, porem outro, estou pesquisando sobre o erro: java.lang.NullPointerException

obrigado a todos ae!!!

rafa.spimenta

rafa-projeseg:
O programa postado acima continua dando erro, porem outro, estou pesquisando sobre o erro: java.lang.NullPointerException

obrigado a todos ae!!!

java.lang.NullPointerException significa q eu estou apontando para um objeto que não existe, ou o caminho estah incorreto…

bom, agora vou tentar concertar aqui!

B

Alguém precisa de aulas de como declarar e instaciar variáveis, especialmente arrays.

Para usar um array você precisa da um new nele, e passar a quantidade de elementos que ele pode comportar.

rafa.spimenta

Eu resolvi fazer primeiro o metodo que armazena as informaçoes do DVD conforme segue codigo:

//Programa armazena informações de DVDs e exibe na tela.

import java.util.Scanner;

public class Dvd 
{
	String[] titulo; 
	int[] genero;
	String[] generoReal;
	int[] copias;
	int[] codigo;
	
	public void cadastraDvd()
	{
		Scanner input = new Scanner(System.in);
		
		System.out.print("Quantos DVDs deseja cadastrar? ");
			int x = input.nextInt();
				
			for(int j = 0 ; j < x ; j++ )
			{
				codigo[j] = j+100;//gerando codigo automatico do DVD
				
				System.out.print("Entre com o numero de copias que o DVD possuir: ");
				copias[j] = input.nextInt();
				
				System.out.print("Digite o título do filme: ");
				titulo[j] = input.nextLine();
				
				System.out.print("Escolha o nº que corresponde ao gênero do filme: ");
				System.out.print("1-Ação; 2-Romance; 3-Comédia; 4-Terror ");
				genero[j] = input.nextInt();
				
				switch(genero[j])
				{   
					case '1': generoReal[j] = "Ação"; break;   
					case '2': generoReal[j] = "Romance"; break;   
					case '3': generoReal[j] = "Comédia"; break;   
					case '4': generoReal[j] = "Terror"; break;   
				}//end switch  
			}//end for
	}//end method cadastra dvd
}//end class

erro:

Todos os direitos reservados
Uso exclusivo da DVD Now S/A

Bem-Vindo!

Quantos DVDs deseja cadastrar? 10

Exception in thread main java.lang.NullPointerException

at Dvd.cadastraDvd(Dvd.java:22)

at TextDvd.main(TextDvd.java:12)

</blockquote>

Eu verifiquei q este erro java.lang.NullPointerException significa q eu estou apontando para um objeto que não existe, ou o caminho estah incorreto…

continuo aqui tentando! quem puder me dar uma luz agradeço!

rafa.spimenta

rsr! eu to ficando perdido!

pq inicialmente se vc verificar o codigo q eu postei, minhas array estavao com new etc…

vou voltar a deixar elas conforme vc esta falando entao!

vlww!!!

rafa.spimenta
System.out.print("Quantos DVDs deseja cadastrar? ");
			x = input.nextInt();

a minha ideia inicial era que meu vetor tivesse o tamanha(quantidade) de DVD a cadastrar.

//Programa armazena informações de DVDs e exibe na tela.

import java.util.Scanner;

public class Dvd 
{
	int x;
	String titulo[] = new String[10]; 
	int genero[] = new int[10];
	String generoReal[] = new String[10];
	int copias[] = new int[10];
	int codigo[] = new int[10];
	
	public void cadastraDvd()
	{
		Scanner input = new Scanner(System.in);
		
		System.out.print("Quantos DVDs deseja cadastrar? ");
			x = input.nextInt();
				
			for(int j = 0 ; j < x ; j++ )
			{
				codigo[j] = j+100;//gerando codigo automatico do DVD
				
				System.out.print("Entre com o numero de copias que o DVD possuir: ");
				copias[j] = input.nextInt();
				
				System.out.print("Digite o título do filme: ");
				titulo[j] = input.nextLine();
				
				System.out.print("Escolha o nº que corresponde ao gênero do filme: ");
				System.out.print("1-Ação; 2-Romance; 3-Comédia; 4-Terror ");
				genero[j] = input.nextInt();
				
				switch(genero[j])
				{   
					case '1': generoReal[j] = "Ação"; break;   
					case '2': generoReal[j] = "Romance"; break;   
					case '3': generoReal[j] = "Comédia"; break;   
					case '4': generoReal[j] = "Terror"; break;   
				}//end switch  
			}//end for
	}//end method cadastra dvd
}//end class

assim esta rodando, porem eu delimitei o tamanho do meu array, q era justamente o q eu n queria, vou verificar aqui, pois pelo q estou pesquisando devo terq usar arraylist.

VLw!!

B
//Programa armazena informações de DVDs e exibe na tela.

import java.util.Scanner;

public class Dvd 
{
	int x;
	String titulo[]; 
	int genero[];
	String generoReal[];
	int copias[];
	int codigo[];
	
	public void cadastraDvd()
	{
		Scanner input = new Scanner(System.in);
		
		System.out.print("Quantos DVDs deseja cadastrar? ");
			x = input.nextInt();

titulo = new String[x]; 
genero = new int[x];
generoReal = new String[x];
copias = new int[x];
codigo = new int[x];
				
			for(int j = 0 ; j < x ; j++ )
			{
				codigo[j] = j+100;//gerando codigo automatico do DVD
				
				System.out.print("Entre com o numero de copias que o DVD possuir: ");
				copias[j] = input.nextInt();
				
				System.out.print("Digite o título do filme: ");
				titulo[j] = input.nextLine();
				
				System.out.print("Escolha o nº que corresponde ao gênero do filme: ");
				System.out.print("1-Ação; 2-Romance; 3-Comédia; 4-Terror ");
				genero[j] = input.nextInt();
				
				switch(genero[j])
				{   
					case '1': generoReal[j] = "Ação"; break;   
					case '2': generoReal[j] = "Romance"; break;   
					case '3': generoReal[j] = "Comédia"; break;   
					case '4': generoReal[j] = "Terror"; break;   
				}//end switch  
			}//end for
	}//end method cadastra dvd
}//end class
B

Próximas partes do exercício:

:arrow: Crie uma classe Dvd somente com os atributos código, titulo, gênero e cópias. Todos privados, não estáticos.

:arrow: Declare uma List de Dvd dentro do método main, e a instacie com ArrayList

:arrow: Instancie um Dvd e grave as informações nele com setters.

:arrow: Adicione o Dvd à List.

:arrow: Crie na classe Dvd um método toString, sobrepondo o toString da classe Object.

:arrow: Imprima a lista ao final do método main

:arrow: Mova o método main para fora da classe Dvd.

T

cara, esse erro agora ta dando pq provavelmente vc nao fez a instancia da string na classe chamadora… ou seja pra executar o setTitulo vc tem q ter essa string ja instanciada em outra classe…

flw,

rafa.spimenta

rsrs!
bom eu tenho q imprimi-los, to tentando aqui, mas estou tento problemas no for q criei para exibir os dvds cadastrados…

n fique nervoso, por eu ser estremamente novato.

Obrigado pela ajuda!

rafa.spimenta

to com erro no for para exibir os dvds:

public void exibeDvd()
	{
		for(int y =0; y < x; y++)
		System.out.println("Os Dvds cadastrados são:");
		System.out.printf("Código: %d; Título: %s; Gênero: %s; " +
				"Número de Cópias: %d \n",codigo[y],titulo[y], generoReal[y],copias[y] );
	}//end method exibeDvd
	
}//end class

o msg de erro eh a variavel int y, n foi declarada...

estranho, pois ela esta declarada no for..

o erro esta nesta linha
"Número de Cópias: %d \n",codigo[y],titulo[y], generoReal[y],copias[y] );
T

tenta fazer isso

for(int y =0; y < x; y++)   {
    System.out.println("Os Dvds cadastrados são:");   
    System.out.printf("Código: %d; Título: %s; Gênero: %s; " +   
            "Número de Cópias: %d \n",codigo[y],titulo[y], generoReal[y],copias[y] );   
}

abre e fecha {} no FOR.

rafa.spimenta

eh mesmo! rs
vlw!
ta dando uns error aki,pois esta sendo exibido os dvds cmo null, mas isso acho q eu consigo resolve!

vlwwww!!

R

Da uma analisada nesse código modificado:

import java.util.Scanner;  
   
 public class Dvd {  
       
     int[] copias = new int[10];  
     int[] codigo = new int[10];

     String[] titulo 	 = new String[10];
     String[] generoReal = new String[10];
    
     public void setTitulo(String  titulo, int index) {
    	
    	 if( this.titulo.length > index) {
    		 this.titulo[index] = titulo;  	 
    	 } else {
    		String[] tmp = new String[index + 1];
    		for(int i = 0; i < this.titulo.length; i++) {
    			tmp[i] = this.titulo[i];    			
    		}
    		
    		tmp[index] = titulo;
    		this.titulo = tmp;
    	 }
     }  
       
     public String[] getTitulo() {  
         return titulo;  
     }//end set get titulo  
       
     public void setGeneroReal( String genero, int index) { 
    	 
    	 if( this.generoReal.length > index) {
    		 this.generoReal[index] = genero;  	 
    	 } else {
    		String[] tmp = new String[index + 1];
    		for(int i = 0; i < this.generoReal.length; i++) {
    			tmp[i] = this.generoReal[i];    			
    		}
    		
    		tmp[index] = genero;
    		this.generoReal = tmp;
    	 } 
     }  
       
     public String[] getGeneroReal()  
     {  
         return generoReal;  
     }//end set get generoReal  
       
     public void setCopias( int copias, int index) {  
    	    	 
    	 if( this.copias.length > index) {
    		 this.copias[index] = copias;  	 
    	 } else {
    		int[] tmp = new int[index + 1];
    		for(int i = 0; i < this.copias.length; i++) {
    			tmp[i] = this.copias[i];    			
    		}
    		
    		tmp[index] = copias;
    		this.copias = tmp;
    	 }
     }  
       
     public int[] getCopias() {  
         return copias;  
     }//end set get copias  
       
     public void setCodigo( int index) {
    	 int novoCodigo = index + 100;
    	 
    	 if( this.codigo.length > index) {
    		 this.codigo[index] = novoCodigo;  	 
    	 } else {
    		int[] tmp = new int[index + 1];
    		for(int i = 0; i < this.codigo.length; i++) {
    			tmp[i] = this.codigo[i];    			
    		}
    		
    		tmp[index] = novoCodigo;
    		this.codigo = tmp;
    	 }         
     }  
       
     public int[] getCodigo()  
     {  
         return codigo;  
     }//end set get codigo  
       
     public void cadastraDvd() {  
         Scanner input = new Scanner(System.in);  
           
         System.out.print("Quantos DVDs deseja cadastrar? ");  
             int x = input.nextInt();  
                   
             for(int j = 0 ; j < x ; j++ )  
             {  
                 setCodigo(j);  
                   
                 System.out.print("Entre com o numero de copias que o DVD possui: ");
                 int copias = input.nextInt();
                 setCopias(copias, j);  
                   
                 System.out.print("Digite o título do filme: ");
                 String titulo = input.next();
                 setTitulo(titulo, j);
                 
                   
                 System.out.print("Escolha o nº que corresponde ao gênero do filme");  
                 System.out.print("( 1-Ação; 2-Romance; 3-Comédia; 4-Terror ):");  
                 
                 int genero = input.nextInt();  
                   
                 switch(genero) {     
                     case 1: setGeneroReal("Ação", j); break;     
                     case 2: setGeneroReal("Romance", j); break;     
                     case 3: setGeneroReal("Comédia", j); break;     
                     case 4: setGeneroReal("Terror", j); break;     
                 }//end switch  
             }//end for  
             System.out.println("Termino do programa!");
     }//end method cadastra dvd  
 }

Quando iniciamos um array dessa maneira

int[] copias = new int[10];

Estamos dizendo que é um array de int e que na sua inicialização terá 10 posições.
Quando você iniciava com “0”, você está dizendo que o array não tem nenhuma posição. Ao tentar acessar qualquer posição desse array, uma exceção é lançada java.lang.ArrayIndexOutOfBoundsException.

No meu código acima, alterei os métodos Sets para validar se estamos querendo inserir um valor em um índice válido, caso o indice não exista, eu crio um novo array com o tamanho maior para atender o novo índice. Logo em seguida, copio os dados do array anterior para o novo, insiro o novo dado no índice solicitado e para finalizar, copio o array novo para o antigo. Uma simples troca!

O código precisa de um refactoring, não me peocupei em centralizar o código que manipula e troca os valores dos arrays! Fica pra você brincar!

Espero ter ajudado!

Abraços

T

cara, sem zueira, vc manja básico de programação? pq os erros seus sao erros básicos de programação, vetor, repetição, etc…sugiro a vc se ker aprender programação e com Java dar uma olhada na apostila da Caelum, é gratuita…

baixa ae…vai te ajudar…

rafa.spimenta

Thiago Domingues:
cara, sem zueira, vc manja básico de programação? pq os erros seus sao erros básicos de programação, vetor, repetição, etc…sugiro a vc se ker aprender programação e com Java dar uma olhada na apostila da Caelum, é gratuita…

baixa ae…vai te ajudar…

deixa eu te explicar:

eu to no 2º periodo, ae to começando a aprender programação , e o prof vai usar java.
meu professor eh meio doidao, e pediu para gente fazer esse exercicio, eh claro q pra quem sabe, esse programa chega a ser ridiculo, mas pra q nao manja igual eu eh phoda, entao eu comprei o livro do deital 6º ed java como progrmar… e fui dando uma lida por alto, ai surgiu esses codigos ae q vc esta vendo! hehe
des do ano passado eu sempre quiz aprender java d verdade, mas sempre fico nessa, mas agora eu devo melhorar…
ja baixei a apostila q vc me indicou! vlww mesmo!! o prog esta rodando blz agora! obrigado a todos! [RESOLVIDO]

T

entao cara, primeira coisa, seja um pouco mais humilde, no começo vc disse q tava procurando o erro e não
tava encontrando, no fim a galera do fórum ficou ae a tarde toda te mostrando o erro, enquanto vc não tinha a
noção básica, vc até ficou meio bravo comigo e me mandou estudar ARRAYS…realmente preciso estudar muito ainda… ninguem vai te massacrar pq vc nao sabe, aki é um fórum, onde uns aprendem com os outros…ae no fim vc disse q não manjava…mas é isso ae cara, vamos em frente e a galera ae te ajuda, quer dizer, nos ajuda…flw…

B

Sinceramente você só piorou o problema, arrays deveriam ter sido eliminadas em primeiro lugar.

e rafa:

O teu professor é doido mesmo. Não se dá Java em 2º período de faculdade, muito menos antes de estudar programação básica.

R

renrutal

Como você fala que eu piorei o problema? Você queria que eu postasse a solução com ArrayList, LinkedList, ou o que mais?

O cara está aprendendo sobre programação, iniciou com java agora, falar de coleções ou qualquer outra bobagem pra ele agora seria um erro com certeza!

Onde eu errei em mostrar para ele que uma solução com arrays é possível?

Quero entender isso!

B

Não tenho problema com arrays, desde que usadas corretamente.

O problema que o código tá procedural até o osso, com zero de encapsulamento.

R

Que o código está procedural até concordo com você! Mas a minha intensão era fazer ele entender como manipular arrays de maneira simples alterando o código existente!

OO deixa pra ele correr atras!

Criado 16 de maio de 2008
Ultima resposta 19 de mai. de 2008
Respostas 33
Participantes 6