Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

149
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!