我正在尝试使用android studio开发我的第一个android应用程序,并且在一个内部类构造函数中得到了几个我似乎无法摆脱的警告:
在for循环中,它警告终止条件始终为true。然而,这种衰退只表现在内心 col
用于循环而不是外部 row
for循环。
在任务中 grid[row][col]
,它警告数组索引 [row]
超出范围,但不是索引 [col]
是。
我不明白为什么会出现警告,因为代码似乎按预期运行,但为什么警告只出现在一个for循环和一个索引中,而任何问题肯定也会应用到另一个?非常感谢您的帮助!
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]
}
}
}
...
}
1条答案
按热度按时间lymgl2op1#
我相信这个问题与变量类型有关。田野
grid_size
是integer类,您正在将其与row
以及col
属于“int”基元类型。grid_size == row
将引用与值进行比较。可能发生的情况是ide检测到了这个问题,但却给出了不准确的警告。
如果你改变了
grid_size
到基元类型int
,警告应该消失。