Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Too many constants Error

Hola, tengo que hace un programa que me halle los divisores de un rango de numeros y la cantidad de numeros dentro de ese rango que cumplen cierta condicion, la cosa es que el programa debe ejecutarse en un segundo y la unica forma que encontre fue hallar primero los divisores y declarar un array con ellos. son en total 65725 numeros dentro del array, y cuando ejecuto el codigo me sale un error "Error: no se ha encontrado o cargado la clase principal divisores.Divisores" y buscando en el test del programa me aparecia el error de "too many constants Error. alguien me podria decir como solucionar esto o porque se produce?
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringBuilder impr = new StringBuilder();
int n,m,cont=0, casos = Integer.parseInt(reader.readLine());
ArrayList<Integer> este = new ArrayList<>();
int array[]={"Aqui inserto los 65725 numeros del array"};
for(int j=0; j<array.length; j++)
este.add(array[j]);

for(int i=0; i<casos; i++){
StringTokenizer token = new StringTokenizer(reader.readLine());
n = Integer.parseInt(token.nextToken());
m = Integer.parseInt(token.nextToken());
for(int j=n; j<m; j++){
if(este.contains(j))
cont++;
}
impr.append(cont).append("\n");
cont=0;
}
System.out.println(impr);
}

abril 5, 2015 | Registered Commenterjtapiase

Por ese error, da la impresión de que se ha llenado el buffer de constantes interno de la VM, lo que es bastante extraño.

Si se ejecuta el código siguiente:

public class NewMain {

public static void main(String[] args) {
int[] array = new int[65725];
Random random = new Random();
for (int i = 0; i "<" array.length; i++) { // ese "<" está para que el foro pueda publicar correctamente el <
array[i] = random.nextInt();
}
List<Integer> lista = new ArrayList<>(65725);
for (int i = 0; i < array.length; i++) {
lista.add(array[i]);
}
System.out.println("lista " + lista.size());
}

}

no hay ningún error, por lo que no me explico en qué parte de tu código se genera.
¿Cómo llenas ese array?, porque no lo dices.

abril 5, 2015 | Registered Commenterchoces

hola, el array lo lleno directamente, nose que tan malo sea eso...

int[] array = { 1, 2, 3, 4, .............., 65725};

abril 5, 2015 | Registered Commenterjtapiase

En el código que has publicado no veo ninguna razón para ese error.
¿Qué versión de JavaSE estás usando?, porque con la 1.8 que he utilizado para las pruebas, no consigo que me lance ese error.

De todos modos, creo que es más sencillo inicializar ese array de la manera que sigue:

int[] array = new int[65725];
for (int i = 0; i < array.length; i++) {
array[i] = i + 1;
}

abril 6, 2015 | Registered Commenterchoces