0
  1. 楽器の弦の名前の配列は、Instrument クラスの必須フィールドですが、プログラムを簡素化するために、楽器のチューニングが各弦で個別に行われないソリューションを受け入れます。ただし、弦ごとに作業したい場合は、第 8 週のアディショナル ノートに良い例があり、チューバに代表される別のクラスの楽器が考慮されています。

  2. リスト 8.3 と 8.4 をモデルとして使用して、プロジェクト 3 のコードを 2 つの別個のクラスに編成してください。1 つは計測器を定義するためのもので、もう 1 つは計測器をテストするためのものです。

  3. そのようなメソッドが標準出力に直接書き込む要件の例とは異なり、Instrument クラスのメソッドが String を返すようにします。これが必要なのは、テスト クラスの出力をコマンド ラインでユーザーが指定したファイルに書き込む必要があるためです。

  4. テスト クラスでは、Instrument 型の 10 個の要素を含む配列を用意し、Instrument クラスのインスタンスを (クラス コンストラクターで new 演算子を使用して) 配列に入力し、while または for ループを使用してテストを実行する必要があります (つまり、各配列要素で Intrument クラス メソッドを呼び出します)。

  5. 要件で指定されているように、テスト クラスはコマンド ラインで引数を使用して開始する必要があります。

                        java Mynamep3tst myfilename.txt
    

ここで、myfilename.txt は、すべての出力が必要なファイルです。このファイル名は、プログラム内で次のように使用する必要があります (リスト 14.13 を参照)。

             java.io.File file = new java.io.File(args[0]);

       java.io.PrintWriter output = new java.io.PrintWriter(file);

ファイルに送信するメッセージがある場合は、

                         output.println(message);

*私の質問は、配列instrumentContentを使用してforループ内でinstrumentクラスの新しいオブジェクトを作成しようとするたびに、エラーが発生することです。この方法で新しいオブジェクトを作成することが許可されていない場合、私には理解できません。このようにすることが許可されていない場合、各配列が使用されるようにする適切な方法は何ですか? *

class StringInstrument {//begin class
//declare variables
boolean isTuned;
boolean isPlaying;
boolean band;
public String nameOfInstrument; 
int numberOfStrings; 
String nameofStringsInInstrument[] = {"E", "A", "D", "G", "B"}; //an array of string names

public StringInstrument() {//begin contructor
    numberOfStrings = 5;    
    isTuned = false;    
    isPlaying = false;
    band = false;
 }//end constructor

public int NumberOfStrings(int stringNumber){//begin method
    System.out.println("The number of strings for the " + nameOfInstrument + " is " + stringNumber );
    return this.numberOfStrings = stringNumber;
}//end method

public String InstrumentNameGet() {//begin method
    return nameOfInstrument;
}//end method

public void SetInstrumentName (String instrumentName) {//begin getter method
        nameOfInstrument = instrumentName;
    }//end method

public String InstrumentNameDisplay() {//begin method
    System.out.println("Your instrument is the " + nameOfInstrument);
    return nameOfInstrument;
}//end method

public boolean PlayInstrument(){//begin method
    System.out.println("You are playing your " + nameOfInstrument);
    return isPlaying = true;
}//end method

public boolean TuneInstrument(){//begin method
    System.out.println("Tune " + nameOfInstrument);
    return isTuned = true;
}//end method

public boolean stopTuneInstrument() {//begin method
    System.out.println("The" + nameOfInstrument + " is out of tune.");
    return isTuned = false;
}//end method 

public boolean StopPlayInstrument() {//begin method
    System.out.println("The " + nameOfInstrument + " has stopped playing");
    return isTuned = false;
}//end method

public boolean PlayInstrumentBand() {//begin method
    System.out.println("The " + nameOfInstrument + " is playing in a band");
    return band = true;
}//end method

public boolean StopPlayInstrumentBand() {//begin method
    System.out.println("The " + nameOfInstrument + " has stoped playing with the band");
    System.out.println("\n");
    return band = false;
}//end method

}// クラス終了

public class RandyGilmanP3 {//begin クラス

 public static void main(String[] args) throws Exception{//begin main  

        java.io.File file = new java.io.File("RandyGilmanP3.txt");  

        //create a file    
        java.io.PrintWriter output = new java.io.PrintWriter(file);    

        //Declaring, creating, and intialize arrays
        String[] instrumentList = new String [10];
        String[] instrumentContent = new String [10];
        int[] stringNumber = new int [10];

        //input string names into array
        instrumentList[0] = "Guitar";
        instrumentList[1] = "Violin";
        instrumentList[2] = "Bass Guitar";
        instrumentList[3] = "Cello";
        instrumentList[4] = "Banjo";
        instrumentList[5] = "Sitar";
        instrumentList[6] = "Rabab";
        instrumentList[7] = "Viola";
        instrumentList[8] = "Harp";
        instrumentList[9] = "Ukulele";
        //input string amounts into array
        stringNumber[0] = 5;
        stringNumber[1] = 4;
        stringNumber[2] = 5;
        stringNumber[3] = 4;
        stringNumber[4] = 5;
        stringNumber[5] = 18;
        stringNumber[6] = 3;
        stringNumber[7] = 4;
        stringNumber[8] = 47;
        stringNumber[9] = 4;

        for (int i = 0; i < instrumentContent.length; i++){//begin for loop
            StringInstrument instrumentList[i] = new StringInstrument();
            output.println(instrumentList[i].InstrumentNameDisplay());
            output.println(instrumentList[i].NumberOfStrings(stringNumber[i]));
            output.println(instrumentList[i].TuneInstrument());
            output.println(instrumentList[i].PlayInstrument());    
            output.println(instrumentList[i].PlayInstrumentBand());
            output.println(instrumentList[i].StopPlayInstrument());
       }//end for loop
      }//end main 
 }//end class
4

1 に答える 1