-2

整数入力を使用して優先度付きキューを計算するプログラムが与えられました。

整数の代わりにオブジェクトを表すようにコードを書き直す方法は?

私のリビジョンの問題は、私の変更が実行されないと言うことです

4

2 に答える 2

1

オブジェクトは文字列ではなく整数(長い)です。したがって、それらを解析しようとしないでください。

あなたは変えることができます

  if( Long.parseLong((String) item) > Long.parseLong((String) queArray[j]) )

  if ((Long) item) > (Long) queArray[j]) )

変更することもできます

public void insert(Object item)

public void insert(Long item)

キャストを避けるために。

しかし、それはLong以外のタイプのオブジェクトでは機能しないため、おそらく役に立たないでしょう。

あらゆる種類のオブジェクトを比較できるようにしたい場合は、コンパレータを提供できます。

(ジェネリックスを使用して)PriorityQとして定義し、メソッドを追加し、次のように挿入メソッドを定義します。PriorityQ<T>setComparator(Comparator comparator)

 public void insert(T item)
 ...

 if ((comparator.compare(item, queArray[j])>0) {

これは、queArray配列もT[]型に変更することを意味します。

于 2012-10-16T07:22:00.053 に答える
0

問題はinsert(Object item)、整数型の値で関数を呼び出すことです。

次に、次のように String にキャストしようとします(String) item

これはうまくいきません。何かを文字列に変換するために使用item.toString()します。

そして、あなたがそれに取り組んでいる間に、これを読むべきです: Java 型キャスト

于 2012-10-16T07:24:46.827 に答える