-1

Java クラスの Netbeans でこのコードを書いていますが、いくつかのエラーがあり、助けていただければ幸いです。割り当ては次のとおりです。

次のガイドラインを使用して、弦楽器クラスを設計および実装します。

楽器のデータ フィールドには、弦の数、弦名を表す弦名の配列 (E、A、D、G など)、楽器がチューニングされているかどうか、楽器が現在演奏されているかどうかを判断するためのブール フィールドが含まれている必要があります。必要に応じて、追加のデータ フィールドを追加できます。

調整された現在再生中のフィールドを false に設定するコンストラクター メソッド。その他の方法

  1. 楽器をチューニングする
  2. 楽器の演奏を開始し、
  3. 楽器の演奏を止める。適切と思われる他の方法 (少なくとも 1 つの独自の方法を追加します)。

任意の図ツール (PPT、Visio など) を使用して UML クラス図を作成します。図を準備し、各クラスの簡単な説明とともに Word 文書に配置します。

インストゥルメント用の Java クラスを作成します。コードが設計仕様と一致し、いくつかの最小限の機能が含まれていることを確認してください。たとえば、バイオリン.play() メソッドを呼び出した場合、少なくともバイオリンが演奏されていることを出力する必要があります。再生を停止したり、調整したり、メソッドを呼び出したりするときに、同様の機能を提供する必要があります。例えば:

 public void playviolin() {
     System.out.println("The violin is now playing.");
 }

Instrument クラス メソッドからの出力を、ユーザーがコマンド ライン引数から入力したテキスト ファイルに書き込みます (例: java Mynamep3tst myfilename.txt)。これにより、プログラムはコマンド ライン引数を介してユーザーからファイル名を受け取ることができます。

最後に、インストルメント クラスを使用してシミュレートする Java テスト クラスを作成します。テスト クラスでは、少なくとも次のことを行う必要があります。a) 楽器のインスタンスを 10 個作成する、b) 楽器を調整する、c) 楽器の演奏を開始する、d) 独自のメソッドを呼び出す、e) 楽器の演奏を停止する。(ヒント: 配列とループを使用すると、作業が簡単になり、コードがより効率的になります!)

したがって、現在の私のコードは次のとおりです。

package andrewrubinfinalproject;

/**
 *
 * @author Andy
 */
public class AndrewRubinFinalProject {


    public static void main(String[] args) {
//fields to determine if the instrument is isTuned,
   private boolean isTuned;

   //and if the instrument is currently isPlaying.
   private boolean isPlaying;


   private String name;

   private int numberOfStrings = 4; // number of strings
   private String nameofStringsInInstrument[] = {"E", "C", "D", "A"}; //an array of string names


    //A constructor method that set the isTuned and currently isPlaying fields to false.

    public AndrewRubinFinalProject() {
        this.isTuned = false;
        this.isPlaying = false;
    }



    public String getNameOfInstrument() {
        return name;
    }


    public void setNameOfInstrument(String nameOfInstrument) {
        this.name = nameOfInstrument;
    }


    // Other methods

    public boolean isPlaying() {
        return isPlaying;
    }

    public void setPlaying(boolean playing) {
        this.isPlaying = playing;
    }

    public boolean isTuned() {
        return isTuned;
    }

    public void setTuned(boolean isTuned) {
        this.isTuned = isTuned;
    }

    public void startPlayInstrument() {
        System.out.println("The Instrument is now Playing.");
        isPlaying = true;
    }

    public void stopPlayInstrument() {
        System.out.println("The Instrument is not Playing anymore.");
        isPlaying = false;
    }

    public void startTuneInstrument() {
        System.out.println("The Instrument is Tuned.");
        isTuned = true;
    }

    public void stopTuneInstrument() {
        System.out.println("The Instrument is not Tuned.");
        isTuned = false;
    }  

    public int getNumberOfStrings() {
       return this.numberOfStrings ;
    }

    public String[] getStringNames() {
        return nameofStringsInInstrument;
    }

}
4

4 に答える 4

2

mainメソッドを閉じていません。}他のメソッドを書き始める前に挿入する必要があります。

のようなコードでマジック ナンバーを使用するのは悪い習慣private int numberOfStrings = 4;です。配列を変更するとどうなるでしょうか。この番号も変更する必要があります。

代わりに.length、配列のサイズを返す を使用することをお勧めします。

于 2013-09-22T12:24:53.797 に答える
0

まず、少なくとも 2 つのクラスを作成する必要があります。1 つはInstrument、そのすべてのフィールドとメソッドです。もう 1 つは、main()メソッドを含み、インストゥルメントを作成して使用するメイン プロジェクト クラスです。投稿したコードは、メソッドを開いて閉じていないため、コンパイルされませんmain

于 2013-09-22T12:25:33.450 に答える
0

オブジェクト指向プログラミングを初めて始めるときは、問題の簡単な説明を書き出すか、少なくとも十分に詳細な用語で考えてください。

最初は、名詞がクラスになるはずです。名詞の抽象グループはインターフェイスの候補として適している可能性があり、動詞は動詞に「最も近い」クラスに属するメソッドになる必要があります。最も近いとは、動詞を実行するには、クラス内の属性へのアクセスがさらに必要になることを意味します。

于 2013-09-22T13:07:36.773 に答える