Erro por causa do Array

7 respostas
Eduardo_Bregaida

Poxa eu n to conseguindo achar o erro nesse ARRAY, alguem pode me ajudar? Preciso entregar isso segunda… me dão umas dicas da onde ta meu erro pessoal…

/*
 * Criado em 19/03/2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - JAVA - Code Style - Code Templates
 */

/**
 * @author Eduardo Bregaida
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - JAVA - Code Style - Code Templates
 */
package algebra;
import java.io.*;
import java.lang.*;
public class algebra {
	
	       public static void main(String[] args) throws IOException {
	               
	       	 int[] z = null;	//Array
	          
	               
	               //Lê G
	               System.out.println ("Digite a quantidade de G: ");
	               InputStreamReader isr = new
	               InputStreamReader(System.in);
	               BufferedReader br = new BufferedReader(isr);
	               String s = br.readLine();
	               int g = Integer.parseInt(s);
	               
	              int cont; 
	              
	               
	               	
	              
	    while (g>=2||g<=6){
	              	
			   for (cont=0;cont&lt;g;cont++){
 			
		        	System.out.print("Digite os Números de G: ");
		        	s = br.readLine();
		      	 	z=new int[cont];
 			   		       
 				
			   }
 		
 				//Lê Elevado
	               System.out.print("Digite o número de N: ");
	               s = br.readLine();
	               int n = Integer.parseInt(s);
	               
	               
	    while (n&gt;=2||n<=6){
	               
 				 				
 				
 		if (n==2){
 			
 			
 			 int x,y;				
 			
 			
 		
 				for (x=0;x&lt;g;x++){
		    		     
		     for (y=0;y&lt;g;y++){
		    
 			
		        System.out.println("(" +z[x]+","+z[y]+")");
		     
		     
		        }         
		    }
	    }				
 	return;
 	
 		}						
 			
   }
   }
        
}

Erro:

Digite a quantidade de G: 2 Digite os Números de G: 1 Digite os Números de G: 2 Digite o número de N: 2 (0,0) Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at algebra.algebra.main(algebra.java:71)

O Certo Seria:

Mostrar na tela ao invés dakela exception mostrar: (1,1),(1,2),(2,1),(2,2)>

7 Respostas

W

vc esta contando um numero de ocorrência de “g”, por exemplo “2”. Depois faz um loop que começa de 0 e vai ate “g”, que por sua vez é 2. Sendo assim seu vetor “z[]” de 2 elementos irá estourar, uma vez que, o índice do vetor começa com 0 e o ultimo elemento do vetor é “z.length – 1

Para resolver esse problema vc faz os loop começando de 0, primeira posição do vetor e indo ate “g-1” ultima posição do vetor, conforme o exemplo:

for (x=0;x&lt;g-1;x++){    		     
    for (y=0;y&lt;g-1;y++){
          System.out.println("(" +z[x]+","+z[y]+")"); 
    }
}

>

Eduardo_Bregaida

Ta dando esse erro e é isso q eu nao consigo assumar:

variable z might not have been initialized
Eduardo_Bregaida

[quote=Heero Yuy]Ta dando esse erro e é isso q eu nao consigo assumar:

variable z might not have been initialized

Olha aki oq é esse erro:

C:\Documents and Settings\Administrador\Desktop\Algebra.java:79: variable z might not have been initialized System.out.println("(" +z[x]+","+z[y]+")"); ^ 1 error

Eduardo_Bregaida

Editando… atualização abaixo da ajuda

Fabricio_Cozer_Marti
z= new int[cont];

Isso faz com que os elementos de z sejam iguais a 0.

nesse seu trecho de codigo vc está fazendo isso

z= new int[cont];
  				for (x=0;x&lt;g;x++){
 		    		     
  					for (y=0;y&lt;g;y++){
 		    
  			
 		        System.out.printf("(" +z[x]+","+z[y]+")");
 		     
 		     
 		        }

Outra coisa é :

System.out.printf("(" +z[x]+","+z[y]+")");

troque por println!!!
:wink: >

Eduardo_Bregaida
Fabrício Cozer Martins:
z= new int[cont];

Isso faz com que os elementos de z sejam iguais a 0.

nesse seu trecho de codigo vc está fazendo isso

z= new int[cont];
  				for (x=0;x&lt;g;x++){
 		    		     
  					for (y=0;y&lt;g;y++){
 		    
  			
 		        System.out.printf("(" +z[x]+","+z[y]+")");
 		     
 		     
 		        }

Outra coisa é :

System.out.printf("(" +z[x]+","+z[y]+")");

troque por println!!!
:wink: >

Eu coloquei o Println e o Eclipse pediu pra trocar pra esse nao sei pq, nem sabia q existia Printf.

E eu tirei akele trecho do z= new int[cont];
Mesmo assim ta dando problema...

/*
 * Criado em 19/03/2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - JAVA - Code Style - Code Templates
 */

/**
 * @author Eduardo Bregaida
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - JAVA - Code Style - Code Templates
 */
import java.io.*;



public class algebra {
	
	       public static void main(String[] args) throws IOException {
	               
	          int cont,i, x=0,y=0,h=0,j=0; 
	          int[] z=null;	//Array
	               
	           
	               
	       
	             
	               //Lê G
	               System.out.println ("Digite a quantidade de G:");
	               InputStreamReader isr = new
	               InputStreamReader(System.in);
	               BufferedReader br = new BufferedReader(isr);
	               String s = br.readLine();
	               int g = Integer.parseInt(s);
	               
	               
	            
	               
	               	
	          i=0;//Inicialização para enfeitar o Println
	    
	    while (g>=2||g<=6){
	              	
			   for (cont=0;cont&lt;g;cont++){
			   	
 			i++;// Contador que enfeita o Println
		        
		        	System.out.print("Digite o "+i+ "º Número: ");
		        	s = br.readLine();
		       	  	z=new int[cont];
 			   		       
 				
 			}
 		}
 			
 		   
 			
 			
 			
 			
 			
 			
 		
 				//Lê Elevado
	               System.out.print("Digite o número de N: ");
	               s = br.readLine();
	               int n = Integer.parseInt(s);
	               
	               
	    
	  j=0;             
 				 				
 do{
 		if (n==2){
 			
 		
 			for (x=0;x&lt;g;x++){    		     
     			for (y=0;y&lt;g;y++){
           			System.out.println("(" +z[x]+","+z[y]+")"); 
           			j++;
     			}
 			}	    
		}
	
	
 }while (n&gt;=2||n<=6);

return;
        
}
}

fikou assim agora e continua dando problema...

Fabricio_Cozer_Marti

Cara, em nenhum momento do seu código você informa os valores
para z, como eh q vc quer q ele imprima algo???

tente ver se substituindo esse trecho

while (g>=2||g<=6){
 	              	
 			   for (cont=0;cont&lt;g;cont++){
 			   	
  			i++;// Contador que enfeita o Println
 		        
 		        	System.out.print("Digite o "+i+ "º Número: ");
 		        	s = br.readLine();
 		       	  	z=new int[cont];
  			   		       
  				
  			}
  		}

por este:

z=new int[cont];

 	    while (g&gt;=2||g<=6){
 	              	
 			   for (cont=0;cont&lt;g;cont++){
 			   	
  			i++;// Contador que enfeita o Println
 		        
 		        	System.out.print("Digite o "+i+ "º Número: ");
 		        	s = br.readLine();
  			   		       
  				z[cont] = Integer.parseInt(s);
  			}
  		}

da jeito.>

Criado 25 de março de 2005
Ultima resposta 25 de mar. de 2005
Respostas 7
Participantes 3