Vetor dando erro

5 respostas
K

Estou tendo troblema com meu programa, nestes seguintes trechos do meu código:

ERRO: at trabalhop1eco030.MainTela.jB_PerimetroActionPerformed(MainTela.java:566) CÓDIGO:
private void jB_PerimetroActionPerformed(java.awt.event.ActionEvent evt) {                                               
        String txtRID = this.tf_RID.getText();  
        int valorRID = Integer.parseInt(txtRID);      
          
        int nID = IDTotal[valorRID];  
        int cont;  
        if(nID == 1)  
        {  
            cont = 0;  
            while(valorRID != IDCirculo[cont])  
            {  
                cont++;  
            }  
            String Valor = String.valueOf(VetorCirculo[cont]);   
            ValorPerimetro.setText(Valor);  
        }  
          
        else if(nID == 2)  
        {  
            cont = 0;  
            while(valorRID != IDReta[cont])  
            {  
                cont++;  
            }  
            String Valor = String.valueOf(VetorReta[cont]);   
            ValorPerimetro.setText(Valor);  
        }  
          
        else if(nID == 3)  
        {  
            cont = 0;  
            while(valorRID != IDTriangulo[cont]) 
            {  
                cont++;  
            }  
            String Valor = String.valueOf(VetorTriangulo[cont]);   
            ValorPerimetro.setText(Valor);  
        }  
    }
TRECHO: while(valorRID != IDTriangulo[cont])

----------------------------------------------------------------------------------------------------------------------------------------

ERRO: at trabalhop1eco030.MainTela.access$600(MainTela.java:11) CÓDIGO e TRECHO:
public class MainTela extends javax.swing.JFrame {

----------------------------------------------------------------------------------------------------------------------------------------

ERRO: at trabalhop1eco030.MainTela$7.actionPerformed(MainTela.java:265) CÓDIGO:
jB_Perimetro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jB_PerimetroActionPerformed(evt);
            }
TRECHO: jB_PerimetroActionPerformed(evt);

5 Respostas

ViniGodoy

Essa linha não é o erro, mas o texto de onde o erro está.

A linha do erro provavelmente terá a palavra “Exception”, é a primeira linha antes do primeiro “at”. Poste-a.

K

ViniGodoy:
Essa linha não é o erro, mas o texto de onde o erro está.

A linha do erro provavelmente terá a palavra “Exception”, é a primeira linha antes do primeiro “at”. Poste-a.

Exception in thread “AWT-EventQueue-0” java.lang.ArrayIndexOutOfBoundsException: 10

di.magdaleno

Essa exceção é lançada quando utiliza um índice negativo ou maior que o tamanho declarado no array.

No seu caso, muito provavelmente, a sua variável cont está passando o do tamanho limite do seu array IDCirculo[].

Lembrando que o índice máximo de um array é igual ao seu tamanho -1, ou seja, um array de 10 posições pode referenciar até o índice 9, uma vez que a contagem do índice começa do número 0.

K

Essa exceção é lançada quando utiliza um índice negativo ou maior que o tamanho declarado no array.

No seu caso, muito provavelmente, a sua variável cont está passando o do tamanho limite do seu array IDCirculo[].

Lembrando que o índice máximo de um array é igual ao seu tamanho -1, ou seja, um array de 10 posições pode referenciar até o índice 9, uma vez que a contagem do índice começa do número 0.

Sugere que faça oque ??? Sem que perca a função …

di.magdaleno

Não sei exatamente o que faz sua função. Mas uma forma de evitar essa exceção é checando se o valor do índice ainda é válido antes de usá-lo no array.

cont = 0; while((cont < IDCirculo.length) && (valorRID != IDCirculo[cont])) { cont++; }
Quando a primeira expressão do while retornar false, ou seja, o índice é igual ou maior que o tamanho do array, a segunda expressão não será executada e a exceção não será lançada. Porém, a execução do bloco while será interrompida talvez sem satisfazer a segunda expressão (valorRID != IDCirculo[cont]). Já não sei te dizer qual é o impacto disso para a sua lógica.

Criado 10 de abril de 2013
Ultima resposta 11 de abr. de 2013
Respostas 5
Participantes 3