get and set

Ok I have this statement in my class

publicvoid setArmor(double newArmor)

{

if (newArmor < 0)

{

System.out.println("ERROR: Bad paramter in Character.setArmor()");

System.exit(0);

}

else

armor = newArmor;

I have the instance variable, armor, declared before this...so this code will let the user declare armor what they want it to be correct?

Now how do I get it to print back out the armor if armor is a private variable....do I have to have get methods for everything I write like these

Thanks in advance!

[857 byte] By [darkmonk04a] at [2007-11-27 3:45:01]
# 1

If you want to print it, then write a printArmor() method that just prints that value. If you want to retrieve the value, then write a getter that return the int.

By the way, why are you shutting down the whole program when there's an invalid input? Shouldn't you be doing something more graceful like setting it to the minimum, or throwing an invalid input exception?

hunter9000a at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...
# 2

Well I just have to be able to return the value if the programmer calls for it such as this:

public double getArmor()

{

return armor;

}

Yeah it seems silly, but it is my coding assignment for my class...we are just doing it for practive

darkmonk04a at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...
# 3

The only time a field being declared as private will affect your programming is if that field was declared in a super class..class Character

{

private double armor;

// your code stuffs

}

vsclass Character

{

private double armor;

// others code stuffs (presumably includes a way to access armor)

}

class Guy extends Character

{

// your code stuffs

}

Hopefully you see the difference between those two. Anyway, if you have direct access to the private variable (as in it's declared in the same class that you're coding), you can access it normally.System.out.println("Your characters AC: " + armor);

But if you are coding in a different class, you have to use the methods in the super class to access it.System.out.println("Your characters AC: " + super.getArmor());

JJCoolBa at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...
# 4
> Yeah it seems sillyDoesn't seem silly to me, unless you want to avoid setter and getters, because you've heard they are evil.
DrLaszloJamfa at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...
# 5

No, No, I meant that it seemed silly that we terminate the program if a bad value is entered...instead of telling the programmer what they did wrong....also, thanks JJCoolB. This brings me to another question...I have to write a set method for the programmer on whether the character is good or evil. Should I use a Boolean for that...or just use good and evil?. later we have to write a method that will switch the side of the character from good to evil or vice versa. Do you think Boolean or String would be easier for that?

darkmonk04a at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...
# 6
If there are only 2 choices for good/evil, then a boolean is a good choice. It's definitely simpler than using a String. Then you can do something like this to reverse the gooditude:goodGuy != goodGuy;
hunter9000a at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...
# 7

> or just use good and evil

There's a joke in there somewhere.

If this is truly a boolean property (it wouldn't be expanded to include "berzerk" or "neutral" later) use boolean.

private boolean evil;

public void setEvil(boolean evil) {

this.evil = evil;

}

public boolean isEvil() {

return evil;

}

public void toggleEvil() {

setEvil(! isEvil()); //or evil = !evil;

}

DrLaszloJamfa at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...
# 8
Wow thanks guys for all the input...your all very good with this thinkin stuff
darkmonk04a at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...
# 9
Me: boolean goodGuyLaszlo: boolean evilWhy are you so pessimistic Dr? Are you racist against good guys or something?
hunter9000a at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...
# 10
Quite the contrary. I expect my boolean fields to have a default value of false ;-)
DrLaszloJamfa at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...
# 11
> Quite the contrary. I expect my boolean fields to> have a default value of false ;-)Again with the pessimism. You've got to cheer up man!
hunter9000a at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...
# 12

[code]

> private boolean evil;

>

> public void setEvil(boolean evil) {

>this.evil = evil;

>

> public boolean isEvil() {

>return evil;

>

> public void toggleEvil() {

>setEvil(! isEvil()); //or evil = !evil;

[ /code]

Ok...I'm confused by this. I see no instance of "true" or "false"

Message was edited by:

darkmonk04

darkmonk04a at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...
# 13

They are possible methods of your Character class. Elsewhere in your code you would have something like this:

Character davros = new Character();

davros.setEvil(false); // here's your boolean

davros.toggleEvil();

floundera at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...
# 14
> Ok...I'm confused by this. I see no instance of "true" or "false"Also, just as int fields are initialized to 0, boolean fields are initialized to false.
DrLaszloJamfa at 2007-7-12 8:48:43 > top of Java-index,Java Essentials,New To Java...