Bom dia! Estou tentando solucionar uma parte de um desafio. Nesse desafio eu tenho que percorrer uma lista de comandos, e onde existir "X" na posição e antes dele existir uma letra eu tenho que remover as duas posições da lista. Logo criei o seguinte código:
Para executar esse procedimento eu criei o seguinte código:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Drone {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Entre com o comando: ");
String entrada = sc.nextLine();
ArrayList<String> posicoes = new ArrayList<String>(Arrays.asList(entrada.toUpperCase().split("")));
//Se tiver um X e antes do X tiver uma letra remova o X e a Letra:
for (int i = 0; i < posicoes.size(); i++) {
if (posicoes.get(i).equalsIgnoreCase("X") && posicoes.get(i-1).matches("[A-Z]*")){
posicoes.remove(i);
posicoes.remove(i - 1 );
}
}
for (int j = posicoes.size()-1; j > 0 ; j--) {
if (posicoes.get(j).equalsIgnoreCase("X") && posicoes.get(j-1).matches("[A-Z]*")){
posicoes.remove(j);
posicoes.remove(j - 1 );
}
}
O comando de entrada é? AABBXX No debug eu consigo obter a resposta, só que no fim da execução ocorre o seguinte erro:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 2 out of bounds for length 2 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:248) at java.base/java.util.Objects.checkIndex(Objects.java:372) at java.base/java.util.ArrayList.get(ArrayList.java:459) at Drone.main(Drone.java:27) Disconnected from the target VM, address: '127.0.0.1:49907', transport: 'socket'
Process finished with exit code 1