2012-02-26 39 views
0

我是一個新手編碼器,我變得非常沮喪,因爲我不斷收到編譯器錯誤。這是一項家庭作業,我想要做的是實現Comparable類來比較任何兩個String對象,以便返回最大值和最小值。我不斷收到編譯器錯誤,我不知道爲什麼我這樣做。實現字符串到可比的界面

public class DataSet implements Comparable 
{ 
    private Object maximum; 
    private Object least; 
    private int answer; 

public int compareTo(Object other) 
{ 
answer = this.getName().compareTo(other.getName()); 
return answer; 

} 

public Object getLeast(Object other) 
{ 
    if(answer<0) 
    return this; 
    else 
    return other; 
    } 

public Object getMaximum(Object other) 
{ 
    if(answer>0) 
    return this; 
    else 
    return other; 
} 


} 

錯誤是GetName方法

public interface Comparable 
{ 
    public int compareTo(Object anObject); 
} 


public class DataSetTester 
{ 
public static void main(String[] args) 
{ 
    DataSet ds = new DataSet(); 
    String s = "john"; 
    String a = "bob"; 
    ds.s.compareTo(a); 
    System.out.println("Maximum Word: " + ds.getMaximum()); 
    System.out.println("Least Word: " + ds.getLeast()); 

} 
} 


incompatible types 
    String s = "john"; 

incompatible types 
    String a = "bob"; 

error: cannot find symbol 
    ds.s.compareTo(a); 

error: method getMaximum in class DataSet cannot be applied to given types; 
    System.out.println("Maximum Word: " + ds.getMaximum()); 
error: method getLeast in class DataSet cannot be applied to given types; 
    System.out.println("Least Word: " + ds.getLeast()); 
+0

我想你誤會分配將產生一個int。 Comparable是一個包含'compareTo()'方法的接口,如果'this'對象是「小於」,「等於」或「大於」某個其他對象,則返回-1,0或+1。它沒有找到最大值或最小值。你描述任務的方式沒有意義。 – 2012-02-26 07:29:49

回答

1

String已經實現了Comparable接口,所以我不確定你的任務是什麼。

answer = this.getName().compareTo(other.getName()); 

Object沒有getName()方法。如果您在DataSet實現它,你需要改變的other類型或添加投:

answer = this.getName().compareTo(((DataSet)other).getName()); 

incompatible types 
    String s = "john"; 

這很奇怪。也許你創建了自己的String類?如果是這樣,你不能Java的String分配給您的String

error: cannot find symbol 
    ds.s.compareTo(a); 

DataSet沒有現場s。表達式ds.s無效。

error: method getMaximum in class DataSet cannot be applied to given types; 
    System.out.println("Maximum Word: " + ds.getMaximum()); 

您需要將參數添加到getMaximum()例如getMaximum(null)。或者,從方法聲明中刪除參數。

0

這些方法被聲明所以他們收到對象

因此,當您嘗試使用getMaximum()(不帶參數)時,它無法在該類中找到該方法。

0

您確定要求您執行Comparable或Comparator嗎?字符串已經實現了可比性,如果你打電話

String firstString = "AAA"; 
int compareToValue = firstString.compareTo("BBB"); 

比較有簽名

int compare(Object o1, Object o2)