Questão nº 31
Questão de Tecnologia da Informação · FCC PGE-AM 2022 (nº 31)
Considere a classe abaixo.
public class Exemplo1 {
public static void main(String[] args) {
int[] v = {4, 10, 2, 7};
int i, j, x, t, max;
max = v.length;
for (i = 0; i <= max - 1; i++) {
for (j = 0; j <= max - i; j++) {
if (v[j] > v[j + 1]) {
x = v[j];
v[j] = v[j + 1];
v[j + 1] = x;
}
}
}
}
}
Ao executar a classe,
- Ao array será ordenado de forma crescente, resultando em 2, 4, 7, 10.
- Bserá realizada uma busca pelo maior valor contido no array, o valor 10.
- Cocorrerá uma exceção, já que se tenta acessar uma posição inexistente no array. (alternativa correta)
- Do array será ordenado de forma decrescente, resultando em 10, 7, 4, 2.
- Eocorrerá uma exceção, pois a variável j deveria iniciar em 1 no laço de repetição.
Resposta comentada
Gabarito Alternativa C
Quando você trabalha com arrays (listas de elementos de tamanho fixo) em Java, cada posição é acessada por um índice, que começa em 0 e vai até o tamanho do array menos 1. Tentar acessar uma posição fora desse intervalo causa um erro chamado `ArrayIndexOutOfBoundsException`.
(A) Incorreta: O código tenta implementar uma lógica de ordenação (parecida com Bubble Sort), mas possui um erro que impede sua execução completa. É uma armadilha, pois o código parece um algoritmo de ordenação, mas não funciona corretamente.
(B) Incorreta: O código realiza comparações e trocas de elementos, o que é característico de um algoritmo de ordenação, não de busca.
(C) Correta: Ocorre uma `ArrayIndexOutOfBoundsException`. Na primeira iteração do laço externo (`i = 0`), o laço interno (`j`) vai de 0 até `max - i`, ou seja, de 0 até 4 (já que `max` é 4). Quando `j` atinge o valor 3, a condição `if (v[j] > v[j + 1])` tenta acessar `v[3 + 1]`, que é `v[4]`. Como o array `v` tem 4 elementos (índices válidos de 0 a 3), a posição 4 não existe, gerando a exceção.
(D) Incorreta: Assim como na alternativa A, o código não chegará a ordenar o array devido à exceção.
(E) Incorreta: Iniciar `j` em 0 é correto para acessar o primeiro elemento do array (`v[0]`). O problema não é o início de `j`, mas sim o seu limite superior combinado com o acesso a `v[j + 1]`.
Fonte: FCC PGE-AM 2022 Técnico em Gestão Procuratorial - Especialidade Engenharia de Software (Caderno Tipo 001). Reproduzida para fins de estudo.