私はCSクラスのコードを書いているので、バイナリ検索を使用する必要があります。私は、コードを実行するたびにバイナリ検索の問題?
はしかし、私は私のバイナリ検索で問題がありますと言っていますが、私は理由を把握することはできませんthis
を示すエラーを取得します。
私は他の2つのクラスを投稿することができますが、私は本当にそれが通過していない理由について本当に固執しています。
私は、私の演技や検索の呼び出しで愚かな間違いのように感じる。 先生に感謝します。
編集: ここでは、コードがより良くなるようにするための要件があります。
DirectorがDVDをソートするようにMoviesプログラムを変更します。効率的なコードを生成するために、ソートしてDVDをソートしないようにしてください。 代わりにredesignメソッドを追加します。これにより、ソートされたコレクションにDVDが挿入され、ソートされたコレクションが生成されます。 さらに、ディレクターが特定のDVDを検索する効率的な方法を実装します。メソッドはsearchForDVDと呼ばれるべきです。それは私たちが探しているディレクターを提供する文字列型仮パラメータだけを持つ必要があります。戻り値の型は、DVDが配置されている配列内のインデックスを指定する整数でなければなりません。検索が成功しなかった場合、メソッドは-1を返します。メソッドsearchForDVDは、DVDコレクションクラスにある必要があります。 メインメソッドを変更し、最後に成功した検索と失敗した検索を1回実行して、searchForDVDメソッドもテストするようにします。 成功した検索で見つかったDVDを表示し、そうでない場合は適切なコメントを書き込みます。
プログラムRUN概要:すべてのDVD
が収集して表示している特定のDVD用のもの2枚のDVD
検索を追加した後、さらに2つのDVDを
表示すべてのDVDを追加
表示それは
コレクションに含まれていない特定のDVDを検索
ここには、この1つのクラス全体のコードがあります。
import java.util.*;
public class DVDCollection
{
private DVD[] collection;
private double totalCost;
public DVDCollection()
{
collection = new DVD[100];
totalCost = 0.0;
}
public void addDVD(String title, String director, int year, double cost, boolean bluray)
{
DVD newDvd = new DVD(title, director, year, cost, bluray);
int index = Collections.binarySearch(collection, newDvd);
if(index >= 0) {
System.out.println("DVD with title " + newDvd.getTitle() + " already exists.");
}
else {
int index1 = -index - 1;
collection = insertDVD(collection, newDVD, index1);
System.out.println("DVD with title " + newDvd.getTitle() + " added.");
}
totalCost += cost;
}
private DVD[] insertDVD(DVD[] original, DVD newDVD, int in)
{
int length = original.length;
DVD[] destination = new DVD[length+1];
System.arraycopy(original, 0, destination, 0, in);
destination[in] = newDVD;
System.arraycopy(original, in, destination, in+1, length-in);
return destination;
}
public String toString()
{
NumberFormat fmt = NumberFormat.getCurrencyInstance();
String report = "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
report += "My DVD Collection\n\n";
report += "Number of DVDs: " + count + "\n";
report +="Total cost: " + fmt.format(totalCost) + "\n";
report += "Average cost: " + fmt.format(totalCost/count);
report += "\n\nDVD List: \n\n";
for (int dvd = 0; dvd < count; dvd++)
report += collection[dvd].toString() + "\n";
return report;
}
}
ご質問に*を含めてください。 – chrylis
静的メソッド 'binarySearch'で' Collections'クラスを作成しましたか? –