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
.