-1

我正在 Netbeans 中为 java 类编写这段代码,但我遇到了一些错误,非常感谢一些帮助。任务是:

使用以下指南设计和实施弦乐器类:

您的乐器的数据字段应包括弦数、表示字符串名称的字符串名称数组(例如 E、A、D、G),以及确定乐器是否已调音以及乐器当前是否正在演奏的布尔字段。如果您愿意,欢迎您添加其他数据字段。

将已调整和当前正在播放的字段设置为 false 的构造方法。其他方法

  1. 调整乐器
  2. 开始演奏乐器,并且
  3. 停止演奏乐器。您认为合适的其他方法(添加至少一种独特的方法)。

使用您选择的图表工具(例如 PPT、Visio)创建 UML 类图。准备好图表并将它们与每个类的简要描述一起放入 Word 文档中。

为您的仪器创建 Java 类。确保您的代码符合您的设计规范,并包含一些最小功能。例如,如果你调用 violin.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 回答
1

看来你的任务是检查你的 OOP 概念。请参阅下面的代码,我对您的代码进行了一些修改。

package andrewrubinfinalproject;

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


   //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 this.name;
    }


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


    // Other methods

    public boolean isPlaying() {
        return this.isPlaying;
    }

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

    public boolean isTuned() {
        return this.isTuned;
    }

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

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

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

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

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

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

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

}

问题在于您的主要方法的定位。首先按照上面的代码编写一个类。AndrewRubinFinalProject然后在你的 main 方法中,通过调用构造函数来创建一个类的实例。

public static void main(String[] args){

    AndrewRubinFinalProject andrewsObject= new AndrewRubinFinalProject();
   // you can call any method in your class with respect to andrewsObject
   // e.g.
   // andrewsObject.setNameOfInstrument("Violin");
   // String x= andrewsObject.getNameOfInstrument()


}

你必须知道的是,main 方法不一定在你正在编写的类中。它可以在您程序中的其他位置。

于 2013-09-22T12:37:42.827 回答
0

首先,您应该至少上 2 节课。一个是Instrument它的所有领域和方法。另一个是您的主要项目类,其中包含main()方法以及创建和使用工具。您发布的代码不会在您打开和关闭该main方法时进行编译。

于 2013-09-22T12:25:33.450 回答
0

当第一次开始学习面向对象编程时,写一个关于问题的简短描述,或者至少用足够详细的术语来考虑它。

最初,名词应该成为你的类。抽象的名词组可能是接口的良好候选者,动词应该成为属于与动词“最接近”的类的方法。最接近的是,我的意思是执行动词将需要更多地访问类中的属性。

于 2013-09-22T13:07:36.773 回答