我需要按升序排序我的Money
對象數組,但我得到3個編譯器錯誤。排序我的數組對象時鍵入錯誤
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);
}
}
需要實現的比較級,以使<評價兩點塊錢的對象,看看這個例子 - https://www.tutorialspoint.com/java/java_using_comparator.htm –
閱讀您發佈的代碼。 'int temp = list [i]',當list [i]'是'Money'時,顯然不起作用。 'int'與'Money'不一樣,所以它們不是賦值兼容的。你甚至讀過錯誤信息嗎? –
你不能在一個對象('Money')和一個值('int')之間進行轉換。你期望做什麼? – David