0
  1. 带有乐器琴弦名称的数组是 Instrument 类中的必填字段,但为了简化程序,我将接受不单独对每个琴弦进行乐器调音的解决方案。但是,如果您想使用每个弦乐,可以在第 8 周附加说明中找到一个很好的示例,其中考虑了以大号为代表的另一类乐器。

  2. 请使用清单 8.3 和 8.4 作为模型,将项目 3 的代码组织在两个单独的类中,一个用于定义仪器,另一个用于测试仪器。

  3. 使 Instrument 类中的方法返回 String,不像需求中的示例,这些方法直接写入标准输出。这是必要的,因为需要将测试类的输出写入用户在命令行上指定的文件。

  4. 在测试类中,您必须有一个包含 10 个 Instrument 类型元素的数组,用 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 循环中创建仪器类的新对象时,都会导致错误。我无法理解是否不允许我以这种方式创建新对象。如果我不允许这样做,那么正确的方法是什么,以便使用我的每个数组?*

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 {//开始上课

 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

0

您已声明instrumentList[]Strings. 您的for循环尝试在这些上调用以下方法Strings

  1. InstrumentNameDisplay()
  2. NumberOfStrings(String)
  3. TuneInstrument()
  4. `PlayInstrument()
  5. PlayInstrumentBand()
  6. StopPlayInstrument()

这些都不是String该类的方法。

看起来你可能想要做的是构建一个数组Instruments......

于 2013-10-30T21:57:32.697 回答