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:
col interna for loop y no para la row externa for loop.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] } } } ... }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.