help on public void resetCount()
Hello,
What I want to do is reset the pig's position to 0 and it's colour to pink. I don't how if I amended the the constructor correctly so the final line sends a resetCount() message to the newly created Animal object. The above code is not working because nothing happens. Pig object is sitting on position 0 with different colour. When I execute the code it should be on position 1, colour red then move to position 0, colour pink. All I want to know is how to use the reset method and if I should be using the loop.
Where am I going wrong?
Thanks in advance.
public class Farm
{
/* instance variable */
private Animal pig;
/*Constructor*/
public Amplifier(Pig aPig)
{
this.number.resetCount = 0;
}
public void resetCount()
{
while (this.pig.getPosition() > 1)
{
this.pig.setColour(Colour.ORANGE);
}
}
}
ttboy04
Junior Poster in Training
53 posts since Mar 2010
Reputation Points: 10
Solved Threads: 0
First of all the this.pig is null. You declare it as attribute at the class but you never give it value. You need to pass the parameter of the constructor to it:
public Amplifier(Pig aPig)
{
this.pig = aPig;
this.number.resetCount = 0;
}
Also in the reset method you check for the position but you never change it. If this.pig.getPosition() is greater than 1 then you will enter the loop, the color will change but you don't change the position. So the expression:this.pig.getPosition() > 1 will not change and you will never exit the loop.
Better try an if statement and change both these values to 0 and pink. Also there is a difference between saying: > 1 and >=1
javaAddict
Nearly a Senior Poster
3,329 posts since Dec 2007
Reputation Points: 1,014
Solved Threads: 448
I tried to use the if statement as suggest but still not working, meaning nothing happens. Are you saying I should not use this.pig
if (getPosition() > 1)
{
this.pig.setPosition(0);
this.pig.setColour(Colour.PINK);
}
ttboy04
Junior Poster in Training
53 posts since Mar 2010
Reputation Points: 10
Solved Threads: 0
I tried to use the if statement as suggest but still not working, meaning nothing happens. Also when I execute, the colour is value is showing NULL, position 6 and reset value 0. So really the values I wish to reset (the resetIndicator()) are not passing over to the new object that I have created (thats what's the problem is). When I change the value to 6, in the this.number.resetCount = 6;, still not working. What else do I need to do?
Below are two coding I have tried. I assume the below code is not really the problem.
public void resetCount()
{
if (getPosition() > 1)
{
this.pig.setPosition(0);
this.pig.setColour(Colour.PINK);
}
}
I also tried (not really I in favor of)...
if (pig.getPosition() > 1)
{
int count = pig.getPosition() - 1;
for (int x = 0; x < count; x++)
{
pig.left();
}
}
pig.setColour(Colour.PINK);
ttboy04
Junior Poster in Training
53 posts since Mar 2010
Reputation Points: 10
Solved Threads: 0
Then print the value of the method. You say that the if doesn't work, but do you know what value does the getPosition() returns?
Also post your entire code using code tags. Press the [code] button when creating a post and put code inside.
javaAddict
Nearly a Senior Poster
3,329 posts since Dec 2007
Reputation Points: 1,014
Solved Threads: 448
when you say print the value method do you mean println, I am using graphical objects. The actual work I am doing is different. I don't really want to give the whole code out. I will check on the return value of the getPosition.
ttboy04
Junior Poster in Training
53 posts since Mar 2010
Reputation Points: 10
Solved Threads: 0
when you say print the value method do you mean println, I am using graphical objects. The actual work I am doing is different. I don't really want to give the whole code out. I will check on the return value of the getPosition.
It doesn't matter. The print is for debugging just for you to see what value it has, in order to understand what is going on.
And yes I mean: System.out.print....
javaAddict
Nearly a Senior Poster
3,329 posts since Dec 2007
Reputation Points: 1,014
Solved Threads: 448
print display the following message...
An instance of class Pig: position 1, colour Colour.RED.
When it should really be in position 0, colour PINK.
ttboy04
Junior Poster in Training
53 posts since Mar 2010
Reputation Points: 10
Solved Threads: 0
print display the following message...
An instance of class Pig: position 1, colour Colour.RED.
When it should really be in position 0, colour PINK.
Can you post the latest code of what you can post.
javaAddict
Nearly a Senior Poster
3,329 posts since Dec 2007
Reputation Points: 1,014
Solved Threads: 448
I think I should first show you the question I am working on...
Create public instance method called reset(). The method takes no arguments and returns no result. The method should move the pig directly to the colour plate to the left of the first black stone and update its colour accordingly.
Alter the constructor for the Animal class so that the final line sends a resetCount() message to the newly created Animal object.
I have also created instance variables in the class...
public class Animal
private Pig piggy;
private int reset;
private int position;
/*Constructor of the object Animal*/
public Animal(Pig aPig)
this.position = 0;
this.reset = 0;
public void resetCount()
{
if (this.pig.getPosition() > 1)
{
this.pig.setPosition(0);
this.pig.setColour(Colour.PINK);
}
}
Could you claify if I done the reset method wrong or am I doing something wrong in the constructor or instance variables in the class.
ttboy04
Junior Poster in Training
53 posts since Mar 2010
Reputation Points: 10
Solved Threads: 0
I already explained the the piggy attribute is null because you never set its value, with the argument of the constructor:
public class Animal
private Pig piggy;
private int reset;
private int position;
/*Constructor of the object Animal*/
public Animal(Pig aPig) {
this.position = 0;
this.reset = 0;
piggy = aPig
}
public void resetCount()
{
// do whatever the assignment says
// change the position
pig.setPosition(0);
// change the color
pig.setColour(Colour.PINK);
}
javaAddict
Nearly a Senior Poster
3,329 posts since Dec 2007
Reputation Points: 1,014
Solved Threads: 448
I think this is known as " Calling an Object's Methods". OK I need to look this up on various books etc. I may need couple of days to sort this out. thanks for your help.
ttboy04
Junior Poster in Training
53 posts since Mar 2010
Reputation Points: 10
Solved Threads: 0
In the constructor if I incude the following syntax
/*Constructor of the object Animal*/
public Animal(Pig aPig)
{
this.piggy.setColour(Colour.PINK);
this.piggy.setPosition(0);
this.piggy = aPig;
}
This will move the object to the position 0 and change it's colour to pink, regardless if I have the following method
public void resetCount()
{
if (this.pig.getPosition() > 1)
{
this.piggy.setPosition(0);
this.piggy.setColour(Colour.PINK);
}
}
If I am wrong can you not show me an example how method can change the value in the constructor. Or on what you are saying I have not set the value to the piggy with the argument of the constructor.
ttboy04
Junior Poster in Training
53 posts since Mar 2010
Reputation Points: 10
Solved Threads: 0
{
// piggy is NULL
this.piggy.setColour(Colour.PINK); // error
// piggy is NULL
this.piggy.setPosition(0); // error
// now you give piggy value.
this.piggy = aPig;
}
First you give value to an object or create it and then you use its methods
javaAddict
Nearly a Senior Poster
3,329 posts since Dec 2007
Reputation Points: 1,014
Solved Threads: 448
the default setting is position 6, colour red. Do you mean
this.piggy = aPig;
this.piggy.setColour(Colour.PINK);
this.piggy.setPosition(0);
ttboy04
Junior Poster in Training
53 posts since Mar 2010
Reputation Points: 10
Solved Threads: 0
sorted after a sort break. cheers JavaAddict
ttboy04
Junior Poster in Training
53 posts since Mar 2010
Reputation Points: 10
Solved Threads: 0