Estou tendo problemas de compilação com o algoritmo do Crivo que realiza a identificação de números primos. Funcionou perfeitamente com array. Porém, ao tentar implementar por meio de ArrayList, me vi diante de alguns erros que até consegui corrigir, mas este persiste apontando algum erro de conversão que não consegui compreender. Poderiam indicar algum tópico ou possível solução que me ajude a entender? Desde já, agradeço.
Código:
`
import java.util.*;
public class CrivoEratostenes {
private int contador = 0;
private ArrayList<Boolean> primos = new ArrayList<Boolean>();
public CrivoEratostenes(int size) {
for (int i = 0; i < primos.size(); i++) {
primos.add(true);
}
buscaPrimos();
}
public int getContador() {
return contador;
}
public ArrayList<Boolean> getPrimos() {
return primos;
}
private void buscaPrimos() {
for (int i = 2; i < primos.size(); i++) {
if (primos.get(i)) {
for (int j = i; i * j < primos.size(); j++) {
primos.set(i * j, false);
}
contador++;
}
}
}
public static void main(String[] args) {
ArrayList<Boolean> arrayFinal = new ArrayList<Boolean>();
CrivoEratostenes s = new CrivoEratostenes(30);
arrayFinal.add(s.getPrimos());
for (int i = 2; i < arrayFinal.size(); i++) {
if (arrayFinal.get(i)) {
System.out.printf("%d é primo!", i);
}
}
}
}`
Compilation error:
(ArrayList < Boolean>) cannot be converted to Boolean.
Só não compreendi o porquê de apontar conversão para Boolean se o getPrimos, alocado no ArrayFinal, está retornando um ArrayList<Boolean> e não simplesmente um Boolean.
