2012-02-25 6 views
0

私はチュートリアルやビデオを調べてみましたが、実装方法を理解していますが、Javaライブラリからクラスを実装する方法について少し混乱しています。私の宿題では、クラスDataSetを利用してComparableオブジェクトを受け入れるようにしています。このプログラムは、オブジェクトに応じて最小値と最大値を記録することを想定しています。この場合、文字列を使用すると仮定します。 Comparableインターフェイスを実装するためにクラスが必要なのかどうかはわかりませんでした。そのため、2つのクラスを作成しました。私の本当の疑問は、実際にオブジェクトを別のものと比較して比較するために、実際にテスタークラスのString変数を組み込む方法です。前もって感謝します。implementationとinterfaces

public class Word implements Comparable 
{ 
private String str; 

public Word() 
{ 
    str = null; 
} 

public Word(String s) 
{ 
    str = s; 
} 

public int compareTo(Object other) 
{ 
    String n = (String) other; 
    return str.compareTo(n); 
} 

} 

私は以下のStringクラスは、B/Cそれは私がおよそあまりにも確認されませんでした、すでに標準クラスだまったく機能しないだろうと思うが、実装に適しているであろう二つのクラスのかわかりませんでしたそれを

public class String implements Comparable 
{ 
    public String s; 

    public String() 
    { 
    s = null; 
    } 

public String(String str) 
{ 
    s = str; 
} 
public int compareTo(Object other) 
{ 
    String n = (String) other; 
    return s.compareTo(n); 
} 
} 


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


public class DataSet 
{ 
private Object maximum; 
private Object least; 
private Comparable compare; 
private int count; 

public DataSet(Comparable s) 
{ 
    compare = s; 
} 

public void add(Object x) 
{ 

    if(count == 0) 
    least = x; 
    if(count == 0 || compare.compareTo(x) >=0) 
    maximum = x; 
    else if(compare.compareTo(x) <0) 
    least = x; 
    count++; 

} 
public Object getMaximum() 
{ 
    return maximum; 
} 

public Object getLeast() 
{ 
    return least; 
} 

} 


public class DataSetTester 
{ 
    public static void main(String[] args) 
    { 
    Comparable n = new Word("sand"); 
    DataSet data = new DataSet(n); 


    data.add(new Word(man)); 



    System.out.println("Maximum Word: " + data.getMaximum()); 
    System.out.println("Least Word: " + data.getLeast()); 
} 
} 

答えて

0

インタフェースを使用すると、あなたのクラスがインタフェースに実装されているすべてのmethodesが含まれていることshowes契約です。この場合、CompareTo(object other)。 Stringクラスはすでに同等のインターフェースを実装しているので、あなた自身のクラスは必要ありません。ここでは、新しいデータセットを作成する方法である、

public class DataSet<T implements Comparable> 
{ 
private T maximum; 
private T least; 
private T count; 


public void add(T x) 
{ 

    if(count == 0){ 
    least = x; 
    maximum = x; 
    } 
    else if(least.compareTo(x) > 0) 
    least = x; 
    else if(maximum.compareTo(x) < 0) 
    maximum = x; 
    count++; 
} 

public T getMaximum() 
{ 
    return maximum; 
} 

public T getLeast() 
{ 
    return least; 
} 

} 

Tがジェネリック型であり、あなたの場合には、それは文字列でなければなりません: DataSet<String> ds = new DataSet<String>;

+0

これが助けた私はあなたのデータセットクラスは、このようになるはずだと思いますこのクラスにComparableオブジェクトを追加してプログラムの終わりに文字列を受け取る方法を知っていますか? – James

+0

新しいデータセットを作成すると、タイプTを返すすべてのメソッドが文字列を返します。したがって、addメソッドはStringをパラメータとして取り、getMaximum()はStringを返します。 – nist