<< Chapter < Page | Chapter >> Page > |
B. Runtime Error
A setup
If you feel like you've been had, chances are you have been had. The purpose for Question 8 was to set you up for this question.
Division by zero for integer types
This program deals with the process of dividing by zero for int types. The code in the following fragment divides the int value 1 by the int value 0.
void doIt(){
System.out.println(1/0);}//end doIt()
Not the same as double divide by zero
However, unlike with type double , this process doesn't return a very large value and continue running. Rather, for type int , attempting to divide by zero will result in a runtime error of type ArithmeticException that looks something like the following under JDK 1.3:
java.lang.ArithmeticException: / by zero
at Worker.doIt(Ap149.java:20)at Ap149.main(Ap149.java:14)
An exercise for the student
I won't attempt to explain the difference in behavior for essentially the same problem between type int and type double . As the old saying goes, I'll leave that as an exercise for the student.
C. Infinity
A double divide by zero operation
This program deals with the process of dividing by zero for floating values of type double .
The following code fragment attempts to divide the double value 1.0 by the double value 0.
void doIt(){
System.out.println(1.0/0);}//end doIt()
The program runs successfully, producing the output Infinity .
What is Infinity?
Suffice it to say that Infinity is a very large number.
(Any value divided by zero is a very large number.)
At this point, I'm not going to explain it further. If you are interested in learning what you can do with Infinity , see the language specifications.
B. Runtime Error
This program illustrates an IndexOutOfBounds exception.
Instantiate and populate an ArrayList object
By now, you will be familiar with the kind of container object that you get when you instantiate the ArrayList class.
The code in the following fragment instantiates such a container, having aninitial capacity of one element.
Then it adds two elements to the container. Each element is a reference to an object of the class String .
void doIt(){
ArrayList ref = null;ref = new ArrayList(1);
ref.add("ABC ");ref.add("DEF ");
Increase capacity automatically
Because two elements were successfully added to a container having an initial capacity of only one element, the container was forced to increase its capacityautomatically.
Following execution of the code in the above fragment, String object references were stored at index locations 0 and 1 in the ArrayList object.
Get reference at index location 2
The next fragment attempts to use the get method to fetch an element from the container at index value 2.
Index values in an ArrayList object begin with zero. Therefore, since only two elements were added to the container in the earlierfragment, there is no element at index value 2.
System.out.println(
(String)ref.get(0) +(String)ref.get(1) +
(String)ref.get(2));
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?