I need to sort my array of Money objects in ascending order, but I get 3 compiler errors.
TestMoney.java:44: error: bad operand types for binary operator '<'
if (list[j] < list[min]) {
^
first type: Money
second type: Money
TestMoney.java:50: error: incompatible types: Money cannot be converted to int
final int temp = list[i];
^
TestMoney.java:52: error: incompatible types: int cannot be converted to Money
list[min] = temp;
^
class TestMoney
{
public static void main(String [] args)
{
Money[] list = new Money[15];
for(int i =0; i<15; i++)
{
int dollar =(int) (Math.random() * 30 + 1);
int cent = (int) (Math.random() * 100);
list[i] = new Money(dollar, cent);
}
sortArray(list);
printArray(list);
}
public static void printArray(Money[] list)
{
for(int i =0; i <list.length; i++)
{
if(i%10 ==0)
{
System.out.println();
}
System.out.print(" " + list[i]);
}
}
public static void sortArray(Money[] list)
{
int min;
for (int i = 0; i < list.length; i++) {
// Assume first element is min
min = i;
for (int j = i + 1; j < list.length; j++) {
if (list[j] < list[min]) {
min = j;
}
}
if (min != i) {
final int temp = list[i];
list[i] = list[min];
list[min] = temp;
}
System.out.println(list[i]);// I print the in ascending order
}
}
}
class Money
{
private int dol;
private int cen;
Money()
{
dol = 0;
cen = 00;
}
Money(int dol,int cen)
{
int remainder = cen % 100;
int divisor = cen / 100;
this.dol = dol+ divisor;
this.cen = remainder;
}
public int getDollors(int dol)
{
return dol;
}
public int getCents(int cen)
{
return cen;
}
public void setDollors(int d)
{
dol = d;
}
public void setCents(int c)
{
cen = c;
}
public Money addMoney(Money m)
{
int d = this.dol + m.dol;
int c = this.cen + m.cen;
return new Money(d, c);
}
public int compareTo(Money m)
{
if(this.dol<m.dol && this.cen<m.cen)
return -1;
else if(m.dol<this.dol && m.cen<this.cen )
return 1;
return 0;
}
public Money subtract(Money m)
{
int cents1 = this.dol*100 + this.cen;
int cents2 = m.dol *100 + m.cen;
int cents = cents1 -cents2;
return new Money(cen/100,cen%100);
}
public String toString()
{
return String.format("$%d.%02d", this.dol,this.cen);
}
}
int temp = list[i], whenlist[i]isMoney, clearly isn't going to work.intis not the same asMoney, so they're not assignment compatible. Did you even read the error message?Money) and a value (int). What would you expect that to do?