Olá pessoal, gostaria de uma ajuda neste exercício de array: Leia um vetor de 40 posições e acumule os valores do primeiro elemento no segundo, deste no terceiro e assim por diante. Ao final, escreva o vetor obtido
O que que eu tentei até agora(detalhe: não compila, acontece ArrayIndexOutOfBounds):
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int vetor[]=new int[10];
for(int i=0;i<=10;i++) {
int aux=i+i;
vetor[aux]=vetor[i];
}
for(int i=0;i<=10;i++) {
System.out.println(vetor[i]);
}
}
Está lançando o erro ArrayIndexOutOfBounds que significa: “Índice do Array Fora do Limite”, ou seja, se o vetor tem tamanho 10, o índice está indo até 11, por exemplo. De fato, de 0 a 9 são dez posições, mas no for você está indicando que o intervalo é de 0 a 10 = 11 posições:
O correto é: for(int i = 0; i < 10; i++)
Também há problema semelhante aqui:
Quando i = 9, então aux será igual a 18, já que i + i (9 + 9) = 18 e 18 > 10;
Quanto valores uma posição de um vetor inteiro pode conter? Esse problema/exercício tem um erro de semântica (do ponto de vista da gramática). Em vez de acumular, o termo correto seria trocar, já que acumular significa amontoar, ajuntar, concentrar. Se esse fosse o caso, o resultado seria um único número (e não um outro vetor) ou um vetor menor.
Creio que o que deveria ser impresso é o mesmo vetor, porém com o número que estava na posição 0 na posição 1, o que estava na posição 1, na posição 2 e assim por diante.
Obrigado pela resposta amigo, ajudou a resolver o bug, porém ainda não consegui solucionar esse problema do programa de arrumar as posições.