我尝试创建一个方法,该方法将创建一个包含2D布尔数组的对象,其中int参数为行数和列数。然后在类中,我有尝试获取该数组的长度和宽度的方法。我试图解决这个问题的两种方法是:
public GameOfLife(int rows, int cols) {
boolean[][] society = new boolean[rows][cols];
}
public int numberOfRows() {
return society.length;
}
在我的测试中,这次尝试给了我一个错误,即社会无法解决变量。然后我试了一下:
private boolean[][] society;
public GameOfLife(int rows, int cols) {
boolean[][] temp = new boolean[rows][cols];
society = temp;
}
编辑:哎呀,忘了为numberOfColumns添加我的方法:
public int numberOfColumns() {
return cols;
}
但是这个问题是当我尝试时它返回0而不是4:
@Test
public void FailedTestingRowsAndCols(){
GameOfLife g1 = new GameOfLife(4,4);
assertEquals(4, g1.numberOfColumns());
}
我对此很新,所以如果这是一个愚蠢的问题,我道歉,但我不确定变量何时何地到期的所有细节,这给了我很多困难。谢谢你的帮助!
答案 0 :(得分:0)
到目前为止,我发布的内容没有任何问题。以下示例适用于我:
public class GameOfLife {
public static void main(String[] args) {
GameOfLife g1 = new GameOfLife(4,4);
System.out.println(g1);
}
private boolean[][] society;
@Override
public String toString() {
final StringBuffer sb = new StringBuffer("GameOfLife{");
sb.append("society=").append(society == null ? "null" : Arrays.deepToString(society));
sb.append('}');
return sb.toString();
}
public GameOfLife(int rows, int cols) {
boolean[][] temp = new boolean[rows][cols];
society = temp;
}
}
答案 1 :(得分:0)
当我在构造函数之外创建一个2D数组时,我无法调整它的大小,但当我在其中创建一个时,我无法访问它
请注意,您永远无法调整阵列大小。创建的数组的大小已修复。您只是将当前数组分配给另一个新创建的数组(这会让您产生成功调整大小的幻觉)。
至于您无法访问的问题很可能是您创建的变量存在于 不同范围 中。
您可以使用以下代码(与您的代码非常相似),它对我来说很好。因此,我猜你的错误实际上并不是来自你展示的代码片段。
class TestRunner
{
public static void main(String[] args){
GameOfLife gol = new GameOfLife(5, 3);
System.out.println(gol.getColumns());
System.out.println(gol.getRows());
}
}
class GameOfLife
{
private boolean[][] society;
public GameOfLife(int rows, int cols){
society = new boolean[rows][cols];
}
public int getColumns(){
return society[0].length;
}
public int getRows(){
return society.length;
}
}
<强>输出:强>
5
3