Hi ranchers, i discovered this class ain't generating a random number for the face variable. Kindly help finding my bug. It's returning zero all the time it's called on.
Also, you're better off using java.util.Random.nextInt(int n). What you have will work if you modify it slightly and actually call the method, but Random is the preferred approach. It gives slightly better distributions, is cleaner to use, and is what people expect to see when reading code.
Whenever my code acts in what I think is a weird way, i stick in System.out.println statements EVERYWHERE. Print when you enter and exit a method. Print when you change a variable. print when you call a method.
I did that, and found that you never enter your roll() method. You never even enter your getFace() method. All you are doing is creating a new Die, and printing the value of its face variable - which is initialized to 0 for you.
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
Also, if this is supposed to simulate a die: what's the lowest possible result on a die? And what's the highest? Are those the numbers you get from your method?
Thank you guys, i never called the method, it's now working well. @Mike, thanks for your observation I only extracted the important part to find the bug!
On my planet I'm considered quite beautiful. Thanks to the poetry in this tiny ad:
a bit of art, as a gift, that will fit in a stocking