Description
Part 1: There are no written exercises in this assignment
Part 2: Programming (20 points):
1) Write a class definition (not a program, there is no main method) named Fraction (saved in a
file Fraction.java) that calculates the math operations as a fraction. A Fraction is an object with
two integers, numerator and denominator. A new Fraction object starts as 0 (0/1). The test
program asks to choose the operation (+, -, *, or /) and type two integers as one single line. Then,
the Fraction shows the operation and result.
Your Fraction class must have:
• two instance variables
– the numerator and denominator (Fraction = 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛
𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑)
• Must implement the following methods
Methods Description of the methods
public Fraction (int numerator, int
denominator)
Constructor-Sets the instance variables with the inputs (2
Pts)
public String toString()
It returns the fraction as a string such as “5/3” when the
numerator is 5 and denominator 3.
When the numerator is 0, it returns “0”, and when the
denominator is “1”, it returns the numerator. 3/1 ==> “3”
(2 Pts)
private int greatestCommonDivisor (int num1,
int num2)
It reads two integers and returns the greatest common
divisor by using the following algorithm.
1. Create a loop, and subtract the smaller integer from the
larger one (if the integers are equal you may choose either
one as the “larger”) during each iteration.
2. Replace the larger integer with the computed
difference.
3. Continue looping until one of the integers becomes
zero.
For instance, assume that two integers 24 and 18 are
given. In the first iteration, the larger item is 24, and the
difference is 24 – 18 = 6. In the next iteration, 24 is
replaced with 6 so the larger item is set as 18, and the
difference is 18 – 6= 12. In the third iteration, 18 is
replaced with 12 so the larger item is set as 12, and the
difference is 12 – 6 = 6. Now two items are both 6, so the
difference is 0, then stop the loop and return 6.
(Not allowed to use Recursive approach: -3 Pts)
private void simplify()
It simplifies the fraction.
Case-1: When the denominator is negative, multiply -1
with both denominator and numerator. For example, 2/-3
© 2018 Yoshihiro Kobayashi
==> -2/3
Case-2: When the numerator and denominator are not
coprime (relatively prime), divide both by their greatest
common divisor. For example, 4/12 ==> 1/3 (2 Pts)
public static Fraction multiply (Fraction a,
Fraction b)
It takes two Fractions, and returns the result of
multiplication of them, a * b. (1 Pts)
public static Fraction divide (Fraction a,
Fraction b)
It takes two Fractions, and returns the result of division of
them, a / b. (1 Pts)
public static Fraction add (Fraction a, Fraction
b)
It takes two Fractions, and returns the result of addition of
them, a + b. (2 Pts)
public static Fraction subtract (Fraction a,
Fraction b)
It takes two Fractions, and returns the result of subtraction
a – b. (2 Pts)
2) Download and complete (fill out the missing code) the test driver called Assignment6.java
(5 Pts). Assignment6.java contains the main method and creates a new Fraction object to test the
methods in the class Fraction. Assignment6.java will ask a user to enter one of the following
commands. Based on the user’s choice, the program needs to perform corresponding operation.
This will be done by calling (invoking) one of the methods you defined in the Fraction class. The
program will terminate when the user enters ‘q’.
Command Options
———————————-c: reset the value
+: add a fraction to the current value
-: subtract a fraction from the current value
*: multiply a fraction to the current value
/: divide the current value by a fraction
?: display the menu again
q: quit this program
Here is the description for each option:
command task
c resets the global Fraction as 0. (0/1)
+ asks to type two integers and construct a new Fraction. Calculate and
display the value of global Fraction and the new Fraction. The result
is set as the current Fraction so that the additional operation can be
made.
– asks to type two integers and construct a new Fraction. Calculate and
display the value of global Fraction and the new Fraction. The result
is set as the current Fraction so that the additional operation can be
made.
* asks to type two integers and construct a new Fraction. Calculate and
display the value of global Fraction and the new Fraction. The result
is set as the current Fraction so that the additional operation can be
made.
© 2018 Yoshihiro Kobayashi
/ asks to type two integers and construct a new Fraction. Calculate and
display the value of global Fraction and the new Fraction. The result
is set as the current Fraction so that the additional operation can be
made.
? displays the menu
q quits the program
You must complete the code inside cases ‘c’, ‘+’, ‘-‘, ‘*’ and ‘/” to read the needed input, call
the appropriate method of the Fraction class, and display an appropriate output. A sample
output is shown below.
Helpful hints for doing this assignment:
• work on it in steps – write one method, test it with a test driver and make sure it works
before going on to the next method
• always make sure your code compiles before you add another method
• your methods should be able to be called in any order
• Operation of Factions: The result is also a Fraction, which needs two values of new
numerator and denominator as shown below.
A ∗ B = < 𝐴𝐴 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 >
< 𝐴𝐴 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 > ∗ < 𝐵𝐵 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 >
< 𝐵𝐵 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 >
= < 𝐴𝐴 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 > ∗ < 𝐵𝐵 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 >
< 𝐴𝐴 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 > ∗ < 𝐵𝐵 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 > = 𝑛𝑛𝑛𝑛𝑛𝑛 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛
𝑛𝑛𝑛𝑛𝑛𝑛 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑
A + B = < 𝐴𝐴 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 >
< 𝐴𝐴 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 >
+
< 𝐵𝐵 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 >
< 𝐵𝐵 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 >
= < 𝐴𝐴 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 > ∗ < 𝐵𝐵 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 > + < 𝐵𝐵 𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛𝑛 > ∗< 𝐴𝐴 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 >
< 𝐴𝐴 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 > ∗ < 𝐵𝐵 𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑𝑑 >
Sample Output (user input is in red, which will not seen online
submission):
Program Input
c
+
3 5
+
1 2
–
2 3
*
4 7
c
+
© 2018 Yoshihiro Kobayashi
4 2
/
12 8
?
q
Program Output
*** Start of Program ***
Command Options
———————————-c: reset the value
+: add a fraction to the current value
-: subtract a fraction from the current value
*: multiply a fraction to the current value
/: divide the current value by a fraction
?: display the menu again
q: quit this program
Value:0
[Please enter a command or type ?] c
Value:0
[Please enter a command or type ?] +
[Enter two numbers for a fraction to ADD] 3 5
0 + 3/5 = 3/5
Value:3/5
[Please enter a command or type ?] +
[Enter two numbers for a fraction to ADD] 1 2
3/5 + 1/2 = 11/10
Value:11/10
[Please enter a command or type ?] –
[Enter two numbers for a fraction to SUBTRACT] 2 3
11/10 – 2/3 = 13/30
Value:13/30
[Please enter a command or type ?] *
[Enter two numbers for a fraction to MULTIPLY] 4 7
13/30 * 4/7 = 26/105
Value:26/105
[Please enter a command or type ?] c
Value:0
[Please enter a command or type ?] +
[Enter two numbers for a fraction to ADD] 4 2
0 + 4/2 = 2
Value:2
[Please enter a command or type ?] /
[Enter two numbers for a fraction to DIVIDE] 12 8
2 / 12/8 = 4/3
Value:4/3
© 2018 Yoshihiro Kobayashi
[Please enter a command or type ?] ?
Command Options
———————————-c: reset the value
+: add a fraction to the current value
-: subtract a fraction from the current value
*: multiply a fraction to the current value
/: divide the current value by a fraction
?: display the menu again
q: quit this program
Value:4/3
[Please enter a command or type ?] q
*** End of Program ***
/**********************************************************************************
Submit your homework by following the instructions below:
**********************************************************************************/
• Go to the course web site (my.asu.edu), and then click on the on-line Submission tab. Log in the site
using the account, which was registered at the first Lab session. Make sure you use the correct email
address for registration. This will allow you to submit assignments. Please use your ASU e-mail
address.
• Submit the Assignment6.java and Fraction.java files on-line. Make sure to choose HW6 from dropdown box.
• In comments, the assignment Header described in “Important Note”.
• The files must compile and run as you submit it. You can confirm this by viewing your submission
results.
Important Note: You may resubmit as many times as you like until the deadline, but we will only mark
your last submission. NO LATE ASSIGNMENTS WILL BE ACCEPTED.