在方法addRow()
中,我需要在2D Arraylist的末尾添加行。例如,如果我创建一个对象:
Board<String> board = new Board<String>(1,4,0,4,"A"); //(int minRow, int maxRow, int minCol, int maxCol, T e)
System.out.println(board);
输出是:
| 0| 1| 2| 3| 4|
+---+---+---+---+---+
1 | A| A| A| A| A|
+---+---+---+---+---+
2 | A| A| A| A| A|
+---+---+---+---+---+
3 | A| A| A| A| A|
+---+---+---+---+---+
4 | A| A| A| A| A|
+---+---+---+---+---+
但是当我呼叫board.addRow()
时(addRow()
每次呼叫只添加一行),输出完全没有变化。
例如,如果我这样做
board.addRow();
board.addRow();
输出应如下所示:
| 0| 1| 2| 3| 4|
+---+---+---+---+---+
1 | A| A| A| A| A|
+---+---+---+---+---+
2 | A| A| A| A| A|
+---+---+---+---+---+
3 | A| A| A| A| A|
+---+---+---+---+---+
4 | A| A| A| A| A|
+---+---+---+---+---+
5 | A| A| A| A| A|
+---+---+---+---+---+
6 | A| A| A| A| A|
+---+---+---+---+---+
但它只是产生我以前的输出:
| 0| 1| 2| 3| 4|
+---+---+---+---+---+
1 | A| A| A| A| A|
+---+---+---+---+---+
2 | A| A| A| A| A|
+---+---+---+---+---+
3 | A| A| A| A| A|
+---+---+---+---+---+
4 | A| A| A| A| A|
+---+---+---+---+---+
请问smb请告诉我我做错了什么?提前谢谢!
public Board(int minRow, int maxRow, int minCol, int maxCol, T fillElem){
this.minRow = minRow;
this.maxRow = maxRow;
this.minCol = minCol;
this.maxCol = maxCol;
if(fillElem == null){
throw new RuntimeException("Cannot set elements to null");
}
else{
this.element = fillElem;
}
答案 0 :(得分:0)
问题如下:现在你要添加的新行没有元素,你要添加一个空行,所以你没有什么可以打印,这就是为什么你看到相同的输出,我重用了你的一些代码创建用于向新行添加元素的板。
public void addRowBottom(){
int origRow = maxRow - minRow;
int col = maxCol - minCol;
ArrayList<T> rowLine = new ArrayList<T>();
myBoard.add(origRow + 1, rowLine);
for(int j = 0; j <= col; j++){
rowLine.add(j, this.element);
}
}
这解决了您当前的问题,但您需要注意的是在添加新行后您没有更新 maxRow 值,所以现在您总是在同一行中插入一个新行位置,这个位置不是底部(第一次是底部但是其余部分不是因为 maxRow 的数量没有更新),修复后的输出我显示将看起来相同,因为始终插入相同的值。如果你想真正将行添加到底部,那么这就是你应该做的:
public void addRowBottom(){
int origRow = maxRow - minRow;
int col = maxCol - minCol;
ArrayList<T> rowLine = new ArrayList<T>();
maxRow = maxRow + 1; //here you are updating the maxNumber of rows
myBoard.add(origRow + 1, rowLine);
for(int j = 0; j <= col; j++){
rowLine.add(j, this.element);
}
}
希望这一切都可以帮到你。