-
Help with arrays and null pointer assignments!!
Could someone please be kind enough to tell me what I am doing wrong here.
I have been racking my brain for a few days now and I just don't understand
where the problem comes from.
Bassically I have a class that I'm using to keep some static variables in.
The constuctor gets called and the variables are initialized in the right
way. However, when I recall them with my getter, it's as if the get methode
has lost all track of them(the variables), and I get a null pointer assignment
error. Why?
Here Is my storage class:
import javax.swing.JOptionPane;
public class ColumnValues
{
private static final int MAX_COLS = 4; //
private static int colValue[];
private static int maxValue;
public ColumnValues()
{
int colValue[] = new int[MAX_COLS];
colValue[0] = 10;
colValue[1] = 20;
colValue[2] = 30;
colValue[3] = 40;
maxValue = 40;
} // default constructor
public static void setColValue(int colNum, int value)
{
colValue[colNum] = value;
maxValue = ( colValue[colNum] >maxValue ? value : maxValue) ;
} // end of setter
public static int getColValue(int colNum)
{
return colValue[colNum];
}
public static int getMaxValue()
{
return maxValue;
}
} // end of class columnValues;
Here is the driver:
public class BarDriver
{
public static void main(String[] args)
{
ColumnValues cValues = new ColumnValues();
int width, height;
int dummyValue;
dummyValue = ColumnValues.getColValue(1);
JOptionPane.showMessageDialog(null, Integer.toString(dummyValue), "Hi",
JOptionPane.INFORMATION_MESSAGE);
+ ...
}
: The second to the last line gives me null pointer error..
Can some one please help and tell me what I did wrong? Thank you very much..
-
Re: Help with arrays and null pointer assignments!!
harrytuttle89 <harrytuttle89@hotmail.com> wrote in message
news:3912405c$1@news.devx.com...
>
>
> Here Is my storage class:
>
> public class ColumnValues
> {
> private static final int MAX_COLS = 4; //
> private static int colValue[];
> private static int maxValue;
>
> public ColumnValues()
> {
> int colValue[] = new int[MAX_COLS];
> colValue[0] = 10;
> colValue[1] = 20;
> colValue[2] = 30;
> colValue[3] = 40;
> maxValue = 40;
> } // default constructor
>
> public static void setColValue(int colNum, int value)
> {
> colValue[colNum] = value;
> maxValue = ( colValue[colNum] >maxValue ? value : maxValue) ;
> } // end of setter
>
> public static int getColValue(int colNum)
> {
> return colValue[colNum];
> }
> public static int getMaxValue()
> {
> return maxValue;
> }
>
> } // end of class columnValues;
>
> Here is the driver:
>
>
> public class BarDriver
> {
> public static void main(String[] args)
> {
> ColumnValues cValues = new ColumnValues();
>
> int width, height;
> int dummyValue;
> dummyValue = ColumnValues.getColValue(1);
> JOptionPane.showMessageDialog(null, Integer.toString(dummyValue), "Hi",
> JOptionPane.INFORMATION_MESSAGE);
>
> + ...
> }
>
> : The second to the last line gives me null pointer error..
>
> Can some one please help and tell me what I did wrong? Thank you very
much..
>
Don't make the getColValue() method and the colValue[] and maxValue fields
static. As it is, your code doesn't initialize them (you don't have a
static initializer). Static methods and fields don't belong to individual
objects of the class. Then use
dummyValue = cValues.getColValue(1);
-
Re: Help with arrays and null pointer assignments!!
Your using the class name and not the actual object.
ColumnValues cValues = new ColumnValues();
int dummyValue;
dummyValue = ColumnValues.getColValue(1); //not an object
use
dummyValue = cValues.getColValue(1);
i don't know if this was a type-o here or that this is your actual code...should
w/ these changes.
cheers,
mike
"harrytuttle89" <harrytuttle89@hotmail.com> wrote:
>
>Could someone please be kind enough to tell me what I am doing wrong here.
> I have been racking my brain for a few days now and I just don't understand
>where the problem comes from.
>
>Bassically I have a class that I'm using to keep some static variables in.
>The constuctor gets called and the variables are initialized in the right
>way. However, when I recall them with my getter, it's as if the get methode
>has lost all track of them(the variables), and I get a null pointer assignment
>error. Why?
>
>Here Is my storage class:
>
>import javax.swing.JOptionPane;
>public class ColumnValues
>{
> private static final int MAX_COLS = 4; //
> private static int colValue[];
> private static int maxValue;
>
> public ColumnValues()
> {
> int colValue[] = new int[MAX_COLS];
> colValue[0] = 10;
> colValue[1] = 20;
> colValue[2] = 30;
> colValue[3] = 40;
> maxValue = 40;
> } // default constructor
>
> public static void setColValue(int colNum, int value)
> {
> colValue[colNum] = value;
> maxValue = ( colValue[colNum] >maxValue ? value : maxValue) ;
> } // end of setter
>
> public static int getColValue(int colNum)
> {
> return colValue[colNum];
> }
> public static int getMaxValue()
> {
> return maxValue;
> }
>
>} // end of class columnValues;
>
>Here is the driver:
>
>
>public class BarDriver
>{
> public static void main(String[] args)
> {
> ColumnValues cValues = new ColumnValues();
>
> int width, height;
> int dummyValue;
> dummyValue = ColumnValues.getColValue(1);
> JOptionPane.showMessageDialog(null, Integer.toString(dummyValue), "Hi",
>JOptionPane.INFORMATION_MESSAGE);
>
>+ ...
>}
>
>: The second to the last line gives me null pointer error..
>
>Can some one please help and tell me what I did wrong? Thank you very much..
>
>
-
Re: Help with arrays and null pointer assignments!!
"harrytuttle89" <harrytuttle89@hotmail.com> wrote:
>
>Could someone please be kind enough to tell me what I am doing wrong here.
>
Hey it's me again. Thank you for all the responses. Sorry for takeing so
long to respond to your responses. I figured out what I was doing wrong.
I declared and did not initialize colValue right here --------------------------------------
|
|
|
>Here Is my storage class: |
> |
>import javax.swing.JOptionPane; |
>public class ColumnValues |
>{ |
> private static final int MAX_COLS = 4; // |
> private static int colValue[]; <<-------------
>private static int maxValue;
>
> public ColumnValues()
> {
> int colValue[] = new int[MAX_COLS];<<---
> colValue[0] = 10; |
> colValue[1] = 20; |
> colValue[2] = 30; |
> colValue[3] = 40; |
> maxValue = 40; |
> } // default constructor |
> |
|
|
Howver I redeclared and initialized colValue right here
in the constructor. However, this version of colValue only had
scope through out the constructor.
Then when I try to access the access the original colValue
in the getter; that version of colValue has not been initialized and I get
a pointer error. The solution of coarse is just to take away the int from
the colValue in the constructor, so I would have
colValue = new int[MAX_VALUE];
Agian thank you for all the earnest responses.
-
Re: Help with arrays and null pointer assignments!!
"mike m" <michaelm@saccapital.com> wrote:
>
>Your using the class name and not the actual object.
>
>ColumnValues cValues = new ColumnValues();
>
>int dummyValue;
>dummyValue = ColumnValues.getColValue(1); //not an object
>
>use
>dummyValue = cValues.getColValue(1);
>
>i don't know if this was a type-o here or that this is your actual code...should
>w/ these changes.
>
>cheers,
>mike
>
Thanks for the response. However, because getColValue() is static, it is
appropiate to use ColumnValues.getColValue(1). getColValue has a life independent
of any instance variables of the class. This is similar to useing Math.random().
Random is static and does not need to refer to a specific instance of Math.
Your:
int dummyValue;
>dummyValue = ColumnValues.getColValue(1); //not an object
>
will also work and should give the same answer.
Thanks
-Harry
-
Re: Help with arrays and null pointer assignments!!
Fine that you found the error yourself... :-)
Nevertheless I have a short note: With your class you still have to instanciate
(sp?) one object to get your static array initialized - which is bad, isn't
it?
Fortunately, there is another approach: do your initialization in a static
block; it should look like this:
static {
int colValue[] = new int[MAX_COLS];
colValue[0] = 10;
colValue[1] = 20;
colValue[2] = 30;
colValue[3] = 40;
maxValue = 40;
}
It is like a static method that will automatically be called once directly
after the class definition is loaded (think of it as a "static constructor").
Hope, this helps...
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Development Centers
-- Android Development Center
-- Cloud Development Project Center
-- HTML5 Development Center
-- Windows Mobile Development Center
|