<< Chapter < Page | Chapter >> Page > |
Get and display the data in the container
Then the code in the next fragment uses the get method to get and display the values in each of the three elements, causing the followingtext to appear on the screen:
5 10 15
System.out.print(ref.get(0)+" ");
System.out.print(ref.get(1)+" ");System.out.print(ref.get(2)+" ");
One step too far
Finally, the code in the next fragment goes one step too far and attempts to get a value from index 3, which is outside the bounds of the container.
System.out.print(ref.get(3)+" ");
This causes the get method of the container object to throw a NoSuchElementException . The program was not designed to handle this exception, so this causes the program to abort with the following text showing on thescreen:
5 10 15 java.util.NoSuchElementException
at MyContainer.get(Ap154.java:49)at Worker.doIt(Ap154.java:30)
at Ap154.main(Ap154.java:15)
(Note that the values of 5, 10, and 15 were displayed on the screen before the program aborted and displayed the error message.)
This program can produce either of the following depending on the value produced by a random boolean value generator:
Throwing an exception
This program illustrates the use of the throw keyword to throw an exception.
(Note that the throw keyword is different from the throws keyword.)
Throw an exception if random boolean value is true
A random boolean value is obtained. If the value is true, the program throws an IllegalStateException and aborts with the following message on the screen:
java.lang.IllegalStateException
at Worker.doIt(Ap153.java:29)at Ap153.main(Ap153.java:20)
If the random boolean value is false, the program runs to completion, displaying the text OK on the screen.
Instantiate a Random object
The following code fragment instantiates a new object of the Random class and stores the object's reference in a reference variable named ref .
void doIt(){
Random ref = new Random(new Date().getTime());
I'm not going to go into a lot of detail about the Random class. Suffice it to say that an object of this class provides methods that will return a pseudorandom sequence of values upon successive calls. You might think of this object as a random value generator.
Seeding the random generator
The constructor for the class accepts a long integer as the seed for the sequence.
(Two Random objects instantiated using the same seed will produce the same sequence of values.)
In this case, I obtained the time in milliseconds, relative to January 1, 1970, as a long integer, and provided that value as the seed. Thus, if you run the program two times in succession, with a time delay of at least one millisecondin between, the random sequences will be different.
Get a random boolean value
The code in the next fragment calls the nextBoolean method on the Random object to obtain a random boolean value. (Think of this as tossing a coin with true on one side and false on the other side.)
if(ref.nextBoolean()){
throw new IllegalStateException();
Throw an exception
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?