// Implements a 2-D array of characters
public class CharMatrix
{
public final char SPACE = ' ';
private char[][] grid;
// Constructor: creates a grid with dimensions rows, cols,
// and fills it with spaces
public CharMatrix(int rows, int cols)
{
grid = new char[rows][cols];
fillRect(0, 0, rows-1, cols-1, SPACE);
}
// Constructor: creates a grid with dimensions rows , cols ,
// and fills it with the fill character
public CharMatrix(int rows, int cols, char fill)
{
grid = new char[rows][cols];
fillRect(0, 0, rows-1, cols-1, fill);
}
// Returns the number of rows in grid
public int numRows()
{
return grid.length;
}
// Returns the number of columns in grid
public int numCols()
{
return grid[0].length;
}
// Returns the character at row, col location
public char charAt(int row, int col)
{
return grid[row][col];
}
// Sets the character at row, col location to ch
public void setCharAt(int row, int col, char ch)
{
grid[row][col] = ch;
}
// Returns true if the character at row, col is a space,
// false otherwise
public boolean isEmpty(int row, int col)
{
return charAt(row, col) == SPACE;
}
// Fills the given rectangle with fill characters.
// row0, col0 is the upper left corner and row1, col1 is the
// lower right corner of the rectangle.
public void fillRect(int row0, int col0, int row1, int col1, char fill)
{
for (int r = row0; r <= row1; r++)
{
for (int c = col0; c <= col1; c++)
{
setCharAt(r, c, fill);
}
}
}
// Fills the given rectangle with SPACE characters.
// row0, col0 is the upper left corner and row1, col1 is the
// lower right corner of the rectangle.
public void clearRect(int row0, int col0, int row1, int col1)
{
fillRect(row0, col0, row1, col1, SPACE);
}
// Returns the count of all non-space characters in row
public int countInRow(int row)
{
int count = 0;
for (int c = 0; c < numCols(); c++)
if (!isEmpty(row, c))
count++;
return count;
}
// Returns the count of all non-space characters in col
public int countInCol(int col)
{
int count = 0;
for (int r = 0; r < numRows(); r++)
if (!isEmpty(r, col))
count++;
return count;
}
}