1) compareTo method must be negative not positive  2) the max value must be $24.09 but its showing "The Max is $4.80"

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

I have the following code for Money.java

public class Money {
    private int dollar;
    private int cent;
    final static int MIN_CENT_VALUE = 0;
    final static int MAX_CENT_VALUE = 99;

    public Money() {
        this.dollar = 0;
        this.cent = 0;
    }

    public Money(int dollar, int cent) {
        this.dollar = dollar;
        if (cent > MIN_CENT_VALUE && cent <= MAX_CENT_VALUE) {
            this.cent = cent;
        } else {
            cent = 0;
        }
    }

    public int getDollar() {
        return this.dollar;
    }

    public void setDollar(int dol) {
        this.dollar = dol;
    }

    public int getCent() {
        return this.cent;
    }

    public void setCent(int c) {
        if (c >= MIN_CENT_VALUE && c <= MAX_CENT_VALUE) {
            this.cent = c;
        }
    }

    public Money add(Money otherMoney) {
        Money m = new Money();
        m.dollar = this.dollar + otherMoney.dollar;
        m.cent = this.cent + otherMoney.cent;
        if (m.cent >= 100) {
            m.dollar++;
            m.cent -= 100;
        }

        return m;
    }

    public Money subtract(Money otherMoney) {
        Money m = new Money();
        m.dollar = this.dollar - otherMoney.dollar;
        m.cent = this.cent - otherMoney.cent;
        if (m.dollar < 0 || m.cent < 0) {
            return null;
        }
        return m;
    }

    public boolean equals(Money otherMoney) {
        return this == otherMoney;
    }

    public int compareTo(Money otherMoney) {
        Money  m =  new Money();
        if (this.dollar< otherMoney.dollar){
            m = otherMoney.subtract(this);
            return m.dollar*100+m.cent;
        }
        else if (this.dollar>otherMoney.dollar){
            m = this.subtract(otherMoney);
            return m.dollar*100+m.cent;
        }
        else{
            return 0;
        }
       
    }

    public String toString() {
        if (this.cent<10){
            return "$" + this.dollar + ".0" + this.cent;
        }
        return "$" + this.dollar + "." + this.cent;
    }

    public static Money max(Money[] m) {
        int max = m[0].dollar+m[0].cent;
        int index = 0;
        for (int i = 0; i < m.length; i++) {
            if (max < m[i].dollar+((m[i].cent)/100)) {
                max = m[i].dollar+((m[i].cent)/100);
                index = i;
            }
        }
        return m[index];
    }

    public static void selectionSort(Money arr[]) {
        int n = arr.length;

        for (int i = 0; i < n -1; i++) {
            int min = i;
            for (int j = i + 1; j < n; j++)
                if (arr[j].dollar+((arr[j].cent)/100.0) < arr[min].dollar+((arr[min].cent)/100.0))
                    min = j;

            // Swap the found minimum element with the first element
            Money temp = new Money();
            temp = arr[min];
            arr[min] = arr[i];
            arr[i] = temp;
        }
    }

    public static void printList(Money[] m, int i) // This method takes an array of object as parameter

    {
        for (Money mm : m){
            System.out.print(mm + "  ");
        }

        System.out.println();
    }
}

_________________________________________

for use with the following unchangleable driver program TestMoney

import java.util.*;
public class TestMoney
{
   public static void main(String[] args)
   {
      Random rnd = new Random(10);
      Money m1 = new Money(5,45);
      Money m2 = new Money(10,95);
      m1.setCent(101);
      Money sum = m1.add(m2);
      System.out.println(m1+" + "+m2+" is "+sum);
      Money diff = m1.subtract(m2);
      System.out.println(m1+" - "+m2+" is "+diff);
      diff = m2.subtract(m1);
      System.out.println(m2+" - "+m1+" is "+diff);
      System.out.println("equals method result: "+m1.equals(m2));
      System.out.println("compareTo method result: "+m1.compareTo(m2));

            
      Money[] list = new Money[15];
   // Generate 15 random Money objects
      for(int i=0;i<list.length;++i)
      {
         list[i] = new Money((int)(1+rnd.nextInt(30)),rnd.nextInt(100));
      }
   // print the list of Money objects, 10 per line
      System.out.println("Unsorted list");
      Money.printList(list,10);
   // Find the largest Money object
      System.out.println("The Max is "+Money.max(list));
  // Sort and print
      System.out.println("Sorted list");
      Money.selectionSort(list);
      Money.printList(list,10);
      }
}

______________________________________

it's having 2 issues still

1) compareTo method must be negative not positive 

2) the max value must be $24.09 but its showing "The Max is $4.80"

**Output Comparison: Understanding Differences in Program Results**

This image showcases a side-by-side comparison of two outputs, labeled as "Your output" and "Expected output," highlighting discrepancies in the results produced by a computational program. The differences are indicated for educational analysis.

### Key Components Analyzed:

1. **Arithmetic Operations:**
   - Four operations are checked for result consistency:
     - `$5.45 + $10.95` should be `16.40`.
     - `$5.45 - $10.95` should yield `null`.
     - `$10.95 - $5.45` should result in `5.50`.

2. **Method Comparisons:**
   - **equals method result:** Both outputs should ideally give `false`, indicating an inequality check.
   - **compareTo method result:** The expected comparison result should return `$50`.

3. **List Outputs:**
   - **Unsorted list:** A series of values listed without any specific order.
     - **Your output:** Values include `$4.80`, `$4.90`, `$17.56`, and others with a highlighted maximum of `$4.80`.
     - **Expected output:** Values begin with `$4.80`, `$4.90`, `$17.56`, and highlight the maximum as `$24.09`.

   - **Sorted list:** Displays values in ascending order.
     - **Your output:** Ends with the sequence `$15.70`, `$16.08`, `$17.53`.
     - **Expected output:** Concludes with values `$22.08`, `$22.14`, `$24.09`.

### Analysis:

- The primary differences arise in the interpretation and highlighting of the maximum value from the unsorted list, which affects subsequent comparison results for the sorted series.
- The accuracy of arithmetic operations and method comparisons are also under evaluation to ensure computational validity.

This comparison is crucial for debugging and enhancing the accuracy of functions utilized within the program, fostering a more precise implementation of numerical operations and data handling.
Transcribed Image Text:**Output Comparison: Understanding Differences in Program Results** This image showcases a side-by-side comparison of two outputs, labeled as "Your output" and "Expected output," highlighting discrepancies in the results produced by a computational program. The differences are indicated for educational analysis. ### Key Components Analyzed: 1. **Arithmetic Operations:** - Four operations are checked for result consistency: - `$5.45 + $10.95` should be `16.40`. - `$5.45 - $10.95` should yield `null`. - `$10.95 - $5.45` should result in `5.50`. 2. **Method Comparisons:** - **equals method result:** Both outputs should ideally give `false`, indicating an inequality check. - **compareTo method result:** The expected comparison result should return `$50`. 3. **List Outputs:** - **Unsorted list:** A series of values listed without any specific order. - **Your output:** Values include `$4.80`, `$4.90`, `$17.56`, and others with a highlighted maximum of `$4.80`. - **Expected output:** Values begin with `$4.80`, `$4.90`, `$17.56`, and highlight the maximum as `$24.09`. - **Sorted list:** Displays values in ascending order. - **Your output:** Ends with the sequence `$15.70`, `$16.08`, `$17.53`. - **Expected output:** Concludes with values `$22.08`, `$22.14`, `$24.09`. ### Analysis: - The primary differences arise in the interpretation and highlighting of the maximum value from the unsorted list, which affects subsequent comparison results for the sorted series. - The accuracy of arithmetic operations and method comparisons are also under evaluation to ensure computational validity. This comparison is crucial for debugging and enhancing the accuracy of functions utilized within the program, fostering a more precise implementation of numerical operations and data handling.
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 1 images

Blurred answer
Follow-up Questions
Read through expert solutions to related follow-up questions below.
Follow-up Question

How can I correct spacing issue Thank you

I'm sorry, I can't assist with that.
Transcribed Image Text:I'm sorry, I can't assist with that.
Solution
Bartleby Expert
SEE SOLUTION
Knowledge Booster
void method
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education