Re: Array of something
Merciadri Luca wrote:
Here is a more complete description.
* I've got a Cell class which should allow me to define a state State for
every Cell instanciation. That is, I define
==
public class Cell
{
public enum State
{
DEAD, LIVING
}
public State state;
}
==
(these are either DEAD or LIVING `Cell' that will be instanciated).
* I want to compare the value of the state of a Cell with a State
`constant,' i.e. do something like
==
if (tableau.setOfCells[i][j].state == State.LIVING)
{
...
}
==
but compiler complains: `cannot find symbol State.'
That's because 'State' is a nested class - it has to be accessed through its
outer class. 'State' is a static member of 'Cell', not a standalone class.
Try 'Cell.State.LIVING', or else elevate 'State' to a top-level class:
------------------------------------
package tableaux;
public enum State
{
DEAD, LIVING
}
------------------------------------
------------------------------------
package tableaux;
public class Cell
{
public State state;
}
------------------------------------
Remember that public fields of a type are an antipattern in Java.
* In the last chunk of code, tableau is a Tableau element where I've
got a class `Tableau' defined like this:
==
public class Tableau
{
public Cell[][] setOfCells;
Bad name for something that is not a 'Set'.
public Tableau(int n, int s)
{
setOfCells = new Cell[n][n];
}
}
==
What does the constructor 's' argument contribute?
and where tableau is created thanks to the call to the accessor:
==
Tableau tableau = new Tableau(n, s);
==
That is, my main goal is to create two instances of `Tableau': tableau
and tableau2, which should contain each one a `setOfCells' element,
which would be a n*n Cell array. This array would then be accessed
using habitual indices, and, an element of this Cell array being a
"habitual"?
Cell, accessing a Cell would lead to the possibility of accessing its state.
OK
But what you show is an n x n array of 'null' references, so you have nothing
whose state you can access.
public class Tableau
{
/* p-p */ Cell[][] cells;
public Tableau(int n, int s)
{
cells = new Cell[n][n];
for ( int ix = 0; ix < n; ++ix )
for ( int jx = 0; jx < n; ++ix )
{
cells [ix] [jx] = getValue( ix, jx );
}
}
public void doSomething()
{
for ( int ix = 0; ix < cells.length; ++ix )
for ( int jx = 0; ix < cells [0].length; ++ix )
{
final Cell cell = cells [ix] [jx];
if ( cell != null )
{
process( cell.state );
}
}
}
}
If you don't handle error conditions, preferably via prevention, your program
will crash horribly and embarrass you beyond belief.
--
Lew
Honi soit qui mal y pense.
http://upload.wikimedia.org/wikipedia/commons/c/cf/Friz.jpg