Apresentar Vector

3 respostas
ashibarai

pessoal estou aqui com um problema na apresentação de uma vector… se me puderem ajudar agradecia :wink:

import javax.swing.JOptionPane;

public class Main {

public static void main (String [] args ) {
    
    // Introduzir tamanho do vector
    
    int N;  
    
    do {
    N = Integer.parseInt(JOptionPane.showInputDialog(null,"Introduza o tamanho do vector:","Tamanho do Vector",JOptionPane.INFORMATION_MESSAGE));
    
        if ( N <= 0 ) {
            JOptionPane.showMessageDialog(null, "O vector não pode ter tamanho negativo ou nulo, por favor introduza um valor válido.","Erro",JOptionPane.ERROR_MESSAGE);
        }
        
    }
    while ( N <= 0 );
    
    // Introduzir valores do vector
    
    int i = 0;
    int [] vector = new int [N];
    
   while ( i < N ) {
    
    int num = 0;
        do {
            num = Integer.parseInt(JOptionPane.showInputDialog(null, "Introduza valor ímpar para a posição"+(i+1)+" do vector:","Valor Vector",JOptionPane.INFORMATION_MESSAGE));
            
            if ( num % 2 == 0 ) {
                JOptionPane.showMessageDialog(null, "O número que introduzir é um número par, por favor introduza um valor ímpar para colocar no vector.","Erro",JOptionPane.ERROR_MESSAGE);
            }
        }
        while ( num % 2 == 0 );
        
        vector[i] = num;
        i += 1;
   }
    
    // Apresentar Vector
    
    JOptionPane.showMessageDialog(null, +vector[i]);

}

}

O erro que dá é:

<blockquote>run:

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

at Main.main(Main.java:44)

Java Result: 1

BUILD SUCCESSFUL (total time: 4 seconds)

</blockquote>

Obrigado!

3 Respostas

lcegatti

ashibarai o problema está na incrementação de seu atributo i, nessa parte do código:

while ( num % 2 == 0 );

vector[i] = num;
i += 1;

Exemplo se eu digitar um tamnanho 2 para o array, seu atributo i no final terá o valor 2, o seu array vector[] de tamanho 2 teria as posições: vector[0] e vector[1] vc está passando seu i que teria o tamanho total do array, ou seja vc estaria fazendo um acesso vector[2], é o motivo da excessão. Não sei se fui claro mas aparentemente o erro é esse
[]'s

ashibarai

ja entedi o erro… mas sabes como é k hei-de corrigir isso ?!

abraço

lcegatti

Você vai mostra sempre o ultimo valor do seu vetor? Se sim tente isso:

JOptionPane.showMessageDialog(null, +vector[i-1]);

[]'s

Criado 25 de fevereiro de 2007
Ultima resposta 25 de fev. de 2007
Respostas 3
Participantes 2