tags:

views:

276

answers:

4

All,

I'm working on a class project to build a little Connect4 game in Java. My current thinking is to have a class of Columns that have as instance variable a few integers (index, max. length, isFull?) and one ArrayList to receive both the integers above and the plays of each players (e.g., 1's and 0's standing for X's and O's). This is probably going to be split between 2 classes but the question remains the same.

My current attempt looks like this:

import java.util.ArrayList;
public class Conn4Col {
    public int hMax; 
    public int index;
    public final int initialSize = 0;
    public final int fullCol = 0;
    public ArrayList<Integer>;
    (...)}  

Unfortunately, this doesn't compile. The compiler says an <identifier> is missing where my ArrayList declaration stands.

We're just starting objects and we haven't really looked into other instance variables than the basic types.

Can someone tell me where my error is and how to correct it?

Many thanks,

JDelage

+1  A: 
public ArrayList<Integer> list;

But, do not declare ArrayList public:

private ArrayList<Integer> list = new ArrayList< Integer > ( );

public List< Integer > getList ( )
{
    return Collections.unmodifiableList( list );
}
Alexander Pogrebnyak
Doh... Thank you. I feel really silly now. :-)
JDelage
This is good practice, but doesn't answer the question does it? He was missing a name for the variable.
Sean Owen
This is by the way not the root cause. See Gregory's answer for the real answer. You're simply forgotten the identifier, like as you have done for `hMax`, `index`, etc..etc..
BalusC
+8  A: 

You forgot to give your member a name.

import java.util.ArrayList;
public class Conn4Col {
    public int hMax; 
    public int index;
    public final int initialSize = 0;
    public final int fullCol = 0;
    public ArrayList<Integer> list;
    (...)} 
Gregory Pakosz
Thank you, this was effectively the problem.
JDelage
A: 
private List<Integer> list = new ArrayList<Integer>();
BrennaSoft
+2  A: 

One more addition: better use java.util.List and only use the specific ArrayList during the creation of the object:

public List<Integer> list;
...
list = new ArrayList<Integer>();

That way you can change the actual implementation without having to change the member declaration.

pitpod