fork download
  1. /*
  2.  * Problem statement: Create a class named Fraction having two integer data members
  3.  * named for a fraction's numerator and denominator. The class' default constructor should
  4.  * provide both data members with default values of 1 if no explicit initialization is
  5.  * provided. The constructor must also prohibit a 0 denominator value. Include member
  6.  * functions for displaying an object's data values and mathematical functions capable of
  7.  * adding, subtracting, multiplying, and dividing two Fraction objects.
  8.  */
  9.  
  10. class Fraction {
  11. private final int numerator;
  12. private final int denominator;
  13.  
  14. Fraction() {
  15. numerator = 1;
  16. denominator = 1;
  17. }
  18.  
  19. Fraction (int numerator, int denominator) {
  20. this.numerator = numerator;
  21. if (denominator == 0) {
  22. throw new IllegalArgumentException("Denominator cannot be zero.");
  23. } else {
  24. this.denominator = denominator;
  25. }
  26. }
  27.  
  28. public String getFraction() {
  29. return numerator + "/" + denominator;
  30. }
  31. public double getFractionDecimal() {
  32. return ((double) numerator) / denominator;
  33. }
  34.  
  35. // Mathematical functions
  36.  
  37. public String addFraction(Fraction otherFraction) {
  38. // Sum formula: a/b + c/d = (ad + cb)/bd
  39. int a = this.numerator;
  40. int b = this.denominator;
  41. int c = otherFraction.numerator;
  42. int d = otherFraction.denominator;
  43. return ((a*d) + (c*b)) + "/" + (b*d);
  44. }
  45.  
  46. public String subtractFraction(Fraction otherFraction) {
  47. // Subtraction formula: a/b - c/d = (ad - cb)/bd
  48. int a = this.numerator;
  49. int b = this.denominator;
  50. int c = otherFraction.numerator;
  51. int d = otherFraction.denominator;
  52. return ((a*d) - (c*b)) + "/" + (b*d);
  53. }
  54.  
  55. public String multiplyByFraction(Fraction otherFraction) {
  56. // Multiplication formula: a/b * c/d = ac/bd
  57. int a = this.numerator;
  58. int b = this.denominator;
  59. int c = otherFraction.numerator;
  60. int d = otherFraction.denominator;
  61. return (a*c) + "/" + (b*d);
  62. }
  63.  
  64. public String divideByFraction(Fraction otherFraction) {
  65. // Division formula: (a/b) / (c/d) = ad/bc
  66. int a = this.numerator;
  67. int b = this.denominator;
  68. int c = otherFraction.numerator;
  69. int d = otherFraction.denominator;
  70. return (a*d) + "/" + (b*c);
  71. }
  72. }
  73.  
  74. class TestFraction {
  75. public static void main(String[] args) {
  76. Fraction fraction3_4 = new Fraction(3,4);
  77. Fraction fraction2_3 = new Fraction(2,3);
  78.  
  79. System.out.println("F1: " + fraction3_4.getFraction() + " Dec: " + fraction3_4.getFractionDecimal());
  80. System.out.println("F2: " + fraction2_3.getFraction() + " Dec: " + fraction2_3.getFractionDecimal() + "\n");
  81. System.out.println("F1 + F2: " + fraction3_4.addFraction(fraction2_3));
  82. System.out.println("F2 + F1: " + fraction2_3.addFraction(fraction3_4) + "\n");
  83. System.out.println("F1 - F2: " + fraction3_4.subtractFraction(fraction2_3));
  84. System.out.println("F2 - F1: " + fraction2_3.subtractFraction(fraction3_4) + "\n");
  85. System.out.println("F1 * F2: " + fraction3_4.multiplyByFraction(fraction2_3));
  86. System.out.println("F2 * F1: " + fraction2_3.multiplyByFraction(fraction3_4) + "\n");
  87. System.out.println("F1 / F2: " + fraction3_4.divideByFraction(fraction2_3));
  88. System.out.println("F2 / F1: " + fraction2_3.divideByFraction(fraction3_4));
  89. }
  90. }
Success #stdin #stdout 0.1s 320256KB
stdin
Standard input is empty
stdout
F1: 3/4 Dec: 0.75
F2: 2/3 Dec: 0.6666666666666666

F1 + F2: 17/12
F2 + F1: 17/12

F1 - F2: 1/12
F2 - F1: -1/12

F1 * F2: 6/12
F2 * F1: 6/12

F1 / F2: 9/8
F2 / F1: 8/9