クラスを正しく実装するようにしようとしていますが、レンガの壁に当たったようです。私がすでに書いたコードが正しいのかどうかは分かりませんが、それは私がそのタスクに近づく方法を理解している唯一の方法でした。私は、この情報とのインタフェースを与えられている:クラスを正しく実装する方法を教えてください。
package mvcchords;
public interface NoteStore {
int getNextNote();
boolean hasNextNote();
void noteAdded(int midicode);
void start(int sortOrder);
}
アプリケーションは、ユーザがそれらをクリックすることができますピアノのキーを表示し、それは彼らがクリックされたため、特定の音のためのノートのmidicodeを節約できます。次に、ユーザーが再生をクリックすると、ノートが保存された順に曲が呼び出されます。ユーザーがノートをクリックするとnoteAdded
が呼び出されます。 hasNextNote
は、保存された音符の最後かどうかを確認するために使用されます。 getNextNote
は配列リストから次の音符を取得するために使用され、ユーザが再生ボタンをクリックするとstart
が呼び出されます。私は整数sortOrder
がタスクのこの部分に無関係であると言われました。再生ボタンをクリックすると、start
メソッドが呼び出され、すべての音符が取得されるまで、getNextNote
メソッドが繰り返し呼び出されるはずです。
以下は、このインターフェイスを実装するクラスのためにこれまでに書いたコードです。このコードは、私に
MyNoteStore is not abstract and does not override abstract method `hasNextNote()` in `mvcchords.NoteStore`.
が、私はここから行くし、任意の助けをいただければ幸いどこかわからないというエラーを与える
import java.util.*;
import mvcchords.*;
public class MyNoteStore implements NoteStore {
public ArrayList<Integer> Notes;
public void noteAdded(int midicode) {
Notes.add(midicode);
}
public boolean hasNextNote(int k) {
if(Notes.get(k) != null)
return true;
else
return false;
}
public int getNextNote(int k) {
if(hasNextNote(Notes.get(k)) == true)
return Notes.get(k);
else
return 0;
}
public void start(int sortOrder) {
for(int k = 0; k < Notes.size(); k++){
hasNextNote(k);
getNextNote(k);
}
}
}
。さらなる情報が必要な場合は、私が作成したポイントを明確にするために最善を尽くします。
は、事前にありがとう:)
はいオンラインで見た後、私はこれを行うことができないことがわかりましたが、これ以外にクラスを正しく作成する方法がわかりません。私は答えを与えられることを望んでいない、行く正しい方向に向かってちょうどヒント:)応答のためにありがとう。 – user1079168
問題のドメインを理解できません(ピアノとノートについては何も知らない)。しかし、私は、ノーツ・コレクションがキーkへの依存性を失う必要があると推測します。したがって、それを渡す必要なしに、Notesコレクションからキーを取得できます。たとえば、Notesがリストの場合、現在のノートのインデックスを(クラス内の)整数変数に保持し、次のノートを取得するときにそれを前進させます)。私はあなたがインタフェースを変更できないと仮定しています。つまり、実装の内部を変更する必要があります。 – Gigi