Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

181
Vistas
Advertencias "La condición siempre es 'verdadera'" y "El índice de matriz está fuera de los límites"

Estoy tratando de desarrollar mi primera aplicación de Android usando Android Studio, y recibo un par de advertencias de las que parece que no puedo deshacerme en un constructor de clase interno:

  1. En el bucle for advierte que la condición de terminación siempre es verdadera. Sin embargo, esta advertencia solo se muestra para la col interna for loop y no para la row externa for loop.
  2. En la asignación de grid[row][col] , advierte que el índice de matriz [row] está fuera de los límites, pero no que el índice [col] lo esté.

No entiendo por qué aparecen las advertencias, dado que el código parece ejecutarse según lo previsto, pero también por qué las advertencias solo aparecen para un bucle for y un índice, cuando seguramente cualquier problema también se aplicaría al otro. ¡Cualquier ayuda es muy apreciada!


 private class MyInnerClass { private final Character UNKNOWN = '.'; // State data private String id; private Integer grid_size; private final Character[][] grid; // Constructor public MyInnerClass(String id, Integer grid_size) { // Check the grid size is in the permitted range String[] permitted_grid_sizes = getResources() .getStringArray(R.array.permitted_grid_sizes); int min_permitted_grid_size = Integer .parseInt(permitted_grid_sizes[0]); int max_permitted_grid_size = Integer .parseInt(permitted_grid_sizes[permitted_grid_sizes.length - 1]); if ((grid_size < min_permitted_grid_size) || (grid_size > max_permitted_grid_size)) { throw new IllegalArgumentException( "specified grid size (" + grid_size + ") out of range"); } // Initialise metadata this.id = id; this.grid_size = grid_size; // Initialise a blank grid this.grid = new Character[this.grid_size][this.grid_size]; for (int row = 0; row < this.grid_size; row++) { for (int col = 0; col < this.grid_size; col++) { // Gives warning "Condition 'col < this.grid_size' is always 'true'" this.grid[row][col] = UNKNOWN; // Gives warning "Array index is out of bounds" on [row] } } } ... }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Creo que el problema está relacionado con la tipificación de variables. El campo grid_size es de clase Integer y lo está comparando con row y col que son de tipo primitivo 'int'.

grid_size == row compara una referencia con un valor.

Lo que probablemente sucede es que su IDE está detectando este problema pero le está dando advertencias inexactas.

Si cambia grid_size a tipo primitivo int , las advertencias deberían desaparecer.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda