1 erro no exercício de vetores?

8 respostas
M

Boa tarde.

Preciso fazer este exercicio e não estou conseguindo

//Receber por digitação 10 números num vetor e visualizar o vetor com os números recebidos.
//Em seguida inverter os números dentro do mesmo vetor de modo que:
//1ª posição   =>  20ª  
// 20ª posição   =>  1ª  
//2ª posição   =>  19ª
//19ª posição   =>  2ª                
//- - - -          - - -  
//Visualizar o vetor com os números trocados.


import java.io.*; 
class vetor10 { 
public static void main(String args[])
{ 

int v [] = new int [10];  
v[1] = 20;
System.out.println("valor"+v[20]);
v[20] = 1;
System.out.println("valor"+v[1]);
v[2] = 19;
System.out.println("valor"+v[19]);
v[19] = 2;
System.out.println("valor"+v[2]);
    
  }
}

Antes de compilar nao apareceu nenhum erro, mas depois de compilar apareceu o
seguinte erro
ArrayIndexOutofBoundException 20

8 Respostas

igor_felix

O seu vetor, tem 10 posições, você o declarou com 10 posições, na linha 16, porém, você está tentando acessar a posição 20 dele, por isso não funciona. Você está tentando acessar uma posição que não existe.
E outra coisa… se são apenas 10 números que serão lidos, como é que você vai trocar a posição de 20?
Muitas dessas posições, ficarão em branco.
Ou você troca eles dentro do array de 10, tipo: o 10º = 1º, 9º = 2º, ou você vai ter um array com 20, e vai precisar ler todos os 20…

vlw

ah, outra coisa:

na hora de inverter, utilize da seguinte maneira: v[ 0 ] = v [ 19 ];

M

Blz?

Cara aconselho vc a dar uma lida sobre vetores. Este erro esta dando porque voce criou uma array com 10 posicoes, ou seja [0]…[9], e voce esta tentando setar um valor na posicao 19 e 20, que nao existe.

M

E então coloquei com 10 posições porque no começo do exercício pedia receber por digitação 10 números e depois aparecia aquela tabela de 1 a 20 e 20 a 1 etc.
mas depois coloquei um array só com 10 e tambem deu este mesmo erro.

E

eh porque o array devem ter indice de v[0] a [9], se vc for atribuir valores a ele, entaum pode receber 10 numeros, mas v[0] = 9; v[1] =8; e assim consequentemente,  se for um de 20 posições, lembrar que deve ir de 0 a 19, valeu?!

M
import java.io.*; 
class vetor10 { 
public static void main(String args[])
{ 

int v [] = new int [10];  
v[0] = 9;
System.out.println("valor"+v[9]);
v[1] = 8;
System.out.println("valor"+v[8]);
v[2] = 7;
System.out.println("valor"+v[7]);
v[3] = 6;
System.out.println("valor"+v[6]);

    
  }
}

Agora deu certo porem os resultados deram tudo 0

M
metalmassacre2:
import java.io.*; 
class vetor10 { 
public static void main(String args[])
{ 

int v [] = new int [10];  
v[0] = 9;
System.out.println("valor"+v[9]);
v[1] = 8;
System.out.println("valor"+v[8]);
v[2] = 7;
System.out.println("valor"+v[7]);
v[3] = 6;
System.out.println("valor"+v[6]);

    
  }
}

Agora deu certo porem os resultados deram tudo 0

Quando voce escreve v[0] = 9, voce esta atribuindo o valor 9 a posicao 0 do array, entao na hora de imprimir voce deve pedir para imprimir a posicao 0 - System.out.println("valor"+v[0]); nao a v[9], sendo que voce n atribuiu valor, logo imprimira 0.

M

Beleza agora deu certo, mas sera que esta de acordo cmo o que o exercício pede ??
[/code]
//Receber por digitação 10 números num vetor e visualizar o vetor com os números recebidos.
//Em seguida inverter os números dentro do mesmo vetor de modo que:
//1ª posição => 20ª
// 20ª posição => 1ª
//2ª posição => 19ª
//19ª posição => 2ª
//- - - - - - -
//Visualizar o vetor com os números trocados.

import java.io.*;
class vetor10 {
public static void main(String args[])
{

int v [] = new int [10];
v[0] = 20;
System.out.println("valor"+v[0]);
v[1] = 19;
System.out.println("valor"+v[1]);
v[2] = 18;
System.out.println("valor"+v[2]);
v[3] = 17;
System.out.println("valor"+v[3]);

}
}
[code]

fjvasconcellos

E ai metalmassacre2, vc está meio confuso ao trocar as posições do vetor..

Fazendo:
v[0] = 20; 
System.out.println("valor"+v[0]); 
v[1] = 19; 
System.out.println("valor"+v[1]); 
v[2] = 18; 
System.out.println("valor"+v[2]); 
v[3] = 17; 
System.out.println("valor"+v[3]);
Voce está atribuindo para o vetor os valores e mostrando eles depois... Pelo que entendi do exercício, ele pede para que esses valores sejam adiquiridos como entrada, (via JOptionPane.showInputDialog()) E por sua vez mostrados...

E depois de imprimir os numeros do vetor que foi digitado, deve ateralos dentro do vetor....
e depois mostralos novamente...

Para lhe dar um exemplo rode o codigo abaixo..
RECOMENDO vc desenvolver o seu proprio depois, para intender o exercício...

public class Vetor10 {
    
    private int tamanhoVetor =10;
    private int v[] = new int[tamanhoVetor],  aux;

    public Vetor10() {
        inicializaVetor();
    }

    private void inicializaVetor() {
        for (int i = 0; i < tamanhoVetor; i++) {
            v[i] = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite o numero " + (i + 1) + " do vetor!"));
        }
    }

    public void imprimeVetor() {
        System.out.print("Numeros do Vetor: ");
        for (int i = 0; i < tamanhoVetor; i++) {
            System.out.print(v[i] + " ");
        }
    }

    public void imprimeVetorTrocado() {
        trocaNumerosVetor();
        System.out.println();
        System.out.print("Numeros do Vetor trocados: ");
        for (int i = 0; i < tamanhoVetor; i++) {
            System.out.print(v[i] + " ");
        }
        System.out.println();
    }

    private void trocaNumerosVetor() {
        for (int i = 0, k = tamanhoVetor-1; i < tamanhoVetor/2; i++, k--) {
            aux = v[i];
            v[i] = v[k];
            v[k] = aux;
        }
    }

    public static void main(String[] args) {
        Vetor10 v = new Vetor10();
        v.imprimeVetor();
        v.imprimeVetorTrocado();
    }
}

Espero ter ajudado... flws!!!

Criado 14 de setembro de 2008
Ultima resposta 15 de set. de 2008
Respostas 8
Participantes 5