Write a program that has 2 classes. The first class is a test class with 2 metho
ID: 3789055 • Letter: W
Question
Write a program that has 2 classes. The first class is a test class with 2 methods; a main method, and a static method called drinkMilk(). The drinkMilk method returns void, and will throw an exception of type OutOfMilkException. The purpose of this exercise is to demonstrate that a method can get information back to the caller through an exceptions object that is thrown inside the called method and caught in the calling method. (OutOfMilkException is the second class that you will create.)
The drinkMilk method will: save what time you start drinking your milk, here’s how:
In the System class there is a method:
public static long currentTimeMillis()
Returns the current time in milliseconds.
Then, in an infinite loop, while (true) generate random integers between 0 – 1000 and perform an int division using the random integer as the denominator. Use anything except 0 as the numerator. You must use the Random class to generate random integers, not the Math class. Eventually you will execute a divide by zero.
Each time you generate a random number print out “Gulp.” Use print instead of println. When a division by zero exception is thrown, the drinkMilk method will catch the ArithmeticException exception. Within the catch block throw an exception of type OutOfMilkException.
(You are catching one kind of exception, creating a more descriptive exception that describes the situation, and throwing that exception.)
The outOfMilkException object will contain a value that indicates how long it took to drink the milk – in milliseconds, i.e., how long it took to generate a 0 value. The main method that catches the OutOfMilkException will printout the number of milliseconds that it took to drink the milk.
This demonstrates that information is "thrown" from the drinkMilk method to the main method. Keep in mind that the purpose of this exercise is to “throw” a piece of information from one method to another without using the usual mechanisms for passing information from one method to another, i.e., parameters and return values.
Note: It is not good practice to put any calculation inside an Exception object. These objects are holders of data only! No arithmetic operators, no method calling. Maybe a String concat + once in a while. The methods in the exceptions should never contribute to the solution; their role is exclusively to know about what went wrong, and to be thrown and caught.
Explanation / Answer
Code:
OutOfMilkException
public class OutOfMilkException extends Exception {
// printing how long it took to get 0
OutOfMilkException(long s) {
super("Took " + s + " milli seconds time to finish the Milk");
}
}
Milk
import java.util.Random;
public class Milk {
public static void main(String[] args) {
// to catch the exception
try {
drinkMilk();
} catch (OutOfMilkException e) {
e.printStackTrace();
}
}
public static void drinkMilk() throws OutOfMilkException {
long start = java.lang.System.currentTimeMillis();
Random rn = new Random();
while (true) {
// putting some random number as numerator
int numerator = 1000;
// to get an random number in the range of 0 -1000 fro denominator
int denominator = rn.nextInt(1001);
// printing Gulp when denominator is valid
if (denominator != 0)
System.out.print("Gulp ");
else {
// throwing exception when denominator is zero
System.out.println();
long end = java.lang.System.currentTimeMillis() - start;
throw new OutOfMilkException(end);
}
}
}
}
Sample Output
Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp Gulp
OutOfMilkException: Took 10 milli seconds time to finish the Milk
at Milk.drinkMilk(Milk.java:32)
at Milk.main(Milk.java:8)
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.