<< 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.)

Back to Question 4

Answer 3

This program can produce either of the following depending on the value produced by a random boolean value generator:

  • B. Runtime Error
  • C. OK

Explanation 3

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

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Object-oriented programming (oop) with java. OpenStax CNX. Jun 29, 2016 Download for free at https://legacy.cnx.org/content/col11441/1.201
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?

Ask