java代码中的非法表达

时间:2013-09-22 12:19:39

标签: java

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

  

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

     

仪器的数据字段应包括字符串数,表示字符串名称的字符串名称数组(例如E,A,D,G),以及用于确定仪器是否已调谐的布尔字段,以及仪器当前是否已调整播放。如果您愿意,欢迎您添加其他数据字段。

     

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

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

    使用您选择的图表工具(例如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 个答案:

答案 0 :(得分:2)

您没有关闭main方法。在开始编写其他方法之前,应该插入}

在代码中使用幻数是一个坏习惯,例如private int numberOfStrings = 4;,如果更改数组怎么办?你也必须改变这个数字。

相反,最好使用返回数组大小的.length

答案 1 :(得分: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;
    }

}

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

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()


}

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

答案 2 :(得分:0)

首先,你应该至少制作2个班级。一个是Instrument及其所有字段和方法。另一个是包含main()方法并创建和使用工具的主项目类。 您发布的代码不会在您打开时编译,也不会关闭main方法。

答案 3 :(得分:0)

首次开始使用面向对象编程时,请写下问题的小描述,或者至少以具有足够细节的术语来考虑它。

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