Espresso: A Concentrated Introduction to Java

Laboratory: Numeric Values in Java

Summary: In this laboratory, you will extend your knowledge of numeric values in Java.

Primary Classes Used:

Contents

Exercises

Exercise 0: Preparation

a. Review Numbers in Java.

b. Create a new project for this lab, called `Numbers`, and package within that project, called `username.numbers`. Note that you should use your own username in place of username.

```mkdir /home/username/CSC152/Numbers
```

c. Start Eclipse and load this project.

Exercise 1: Limits on Integer Values

a. Read the documentation for the various class forms of integers and write a main class that prints out the largest and smallest legal value for `int` and `long`. For example, to print out the largest `int`, you would use something like:

```pen.print("Largest int: ");
pen.println(Integer.MAX_VALUE);
```

b. Determine experimentally what happens when you add 1, 2, 5, and 100 each largest legal value. Note that you may get some strange results because, well, it doesn't make a lot of sense to add beyond the largest value.

c. Determine experimentally what happens when you subtract 1, 2, 5, and 100 from each smallest legal value.

Exercise 2: Limits on Real Values

a. Determine experimentally the smallest positive non-zero float value you can represent.

b. Read the documentation for `java.lang.Float` and see if it provides further guidance on what values are representable.

Exercise 3: Square Roots and Approximations

You may recall that in a previous course, you answered the following question when you first explored numeric computation:

Have DrScheme compute the square of the square root of 2 and subtract 2 from the result. Ideally, the difference should be 0; why isn't it? How big is the difference?

Redo this exercise in Java, using doubles for the computation.

Note that `java.lang.Math.sqrt` is useful for computing square roots.

Exercise 4: A Simple Calculator

a. Write a main class that reads in two `int` values and prints out their sum, difference, product, and quotient. Note that you will probably need to use a method of the `Integer` class to convert the strings (which you already know how to read) to integers.

b. What quotient do you get when you enter the integers 5 and 2? Why? c. Rewrite your program so that it prints quotients including their fractional component.

d. What happens when you enter two integers whose product is larger than the largest legal integer?

Exercise 5: An Improved Calculator

a. Rewrite your calculator from the previous exercise to use `java.math.BigInteger` values rather than `int` values. Note that instead of the infix operations, you should instead you the appropriate methods from the `BigInteger` class.

b. Confirm that it is possible to represent some very large integers using the new calculator.

Exercise 6: Other Cool Math Functions

Read the documentation for `java.lang.Math` and summarize for yourself what methods are available.

History

Monday, 7 February 2005 [Samuel A. Rebelsky]

• Created

Thursday, 8 September 2005 [Samuel A. Rebelsky]

• Added the followup problem on square roots of BigDecimal values.
• Other minor edits.

Monday, 6 February 2006 [Samuel A. Rebelsky]

• Removed an exercise ("the followup problem on square roots of BigDecimal values").
• Minor edits.

Tuesday, 7 February 2006 [Samuel A. Rebelsky]

• Minor edits.

This page was generated by Siteweaver on Thu Mar 30 15:24:40 2006.
The source to the page was last modified on Tue Feb 7 08:43:43 2006.
This page may be found at `http://www.cs.grinnell.edu/~rebelsky/Espresso/Labs/numbers.html`.

You may wish to validate this page's HTML ; ; Check with Bobby

Samuel A. Rebelsky
rebelsky@grinnell.edu