Método onde deu erro:
private List<Integer> inverter(List<Integer> inversao) {
List<Integer> aux = inversao;
//inverte através de um for decrescente
for(int i = inversao.size(); i >= 0; i--) {
aux.add(inversao.get(i));//erro aqui
}
return aux;
}
Código completo:
package entidades;
import java.util.ArrayList;
import java.util.List;
public class Escher {
private List<Integer> lista = new ArrayList<>();
//------------------------
public List<Integer> getLista() {
return lista;
}
public void add(Integer n) {
lista.add(n);
}
//------------------------
private List<Integer> inverter(List<Integer> inversao) {
List<Integer> aux = inversao;
//inverte através de um for decrescente
for(int i = inversao.size(); i >= 0; i--) {
aux.add(inversao.get(i));//erro aqui
}
return aux;
}
public char verificador() {
char resultado = 'N';
int aux = 0;
List<Integer> invertido = inverter(lista);//lista invertida
List<Integer> soma = new ArrayList<>();
for(int i = 0; i < invertido.size(); i++) {
soma.add(invertido.get(i) + lista.get(i));//lista "soma" recebendo os valores da lista normal somado com a sua inversão
//para cada elemento diferente, será incrementado + 1 em aux
if(soma.get(0) != soma.get(i)) {
aux++;
}
}
//caso a variável valer 0, a variável resultado irá receber um 'S'
if(aux == 0) {
resultado = 'S';
}
return resultado;
}
}
package principal;
import java.util.Scanner;
import entidades.Escher;
public class Programa {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Escher escher = new Escher();
int n = scan.nextInt();
for(int i = 0; i < n; i++) {
int lista = scan.nextInt();
escher.add(lista);
}
System.out.println(escher.verificador());
scan.close();
}
}
//https://olimpiada.ic.unicamp.br/pratique/pj/2020/f1/escher/
Descrição do erro:
Exception in thread “main” java.lang.IndexOutOfBoundsException: Index 5 out of bounds for length 5
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
at java.base/java.util.Objects.checkIndex(Objects.java:359)
at java.base/java.util.ArrayList.get(ArrayList.java:427)
at entidades.Escher.inverter(Escher.java:27)
at entidades.Escher.verificador(Escher.java:38)
at principal.Programa.main(Programa.java:21)