Replacing byte[][]
with a List<List<Byte>>
makes little sense, but here is how to do it.
First, though, your code is inconsistent with order of array indexes:
getLive()
parameters declared asx,y
, but you call it withif (getLive(y, x) == 1)
.- In
getLive()
, you useboard[y][x]
, but then you usetestBoard[x][y + movedistance] = 1;
- But you also use
getHeight()
withx
, andgetWidth()
withy
, so maybe it (accidentally?) “adds up”.
I’ll assume that method should always be x,y
, array should be [y][x]
, and that x
is “width” and y
is “height”.
Also, [y + movedistance]
will cause ArrayIndexOutOfBoundsException
, since your loop uses full range of values. I’ll assume you want to “wrap around” on overflow.
public byte getLive(int x, int y) {
return board.get(y).get(x);
}
public void patternRight(){
List<List<Byte>> testBoard = new ArrayList<>();
for (int y = 0; y < getHeight(); y++) {
List<Byte> row = new ArrayList<>();
for (int x = 0; x < getWidth(); x++)
row.add((byte) 0);
testBoard.add(row);
}
for (int x = 0; x < getWidth(); x++) {
for (int y = 0; y < getHeight(); y++) {
if (getLive(x, y) == 1)
testBoard.get((y + movedistance) % getHeight()).set(x, (byte) 1);
}
}
}
solved How to convert my byte[] methods to arraylist [] methods? [closed]