我在Netbeans中为java类编写这段代码,但是我遇到了一些错误,非常感谢一些帮助。作业是:
使用以下指南设计并实施弦乐器类:
仪器的数据字段应包括字符串数,表示字符串名称的字符串名称数组(例如E,A,D,G),以及用于确定仪器是否已调谐的布尔字段,以及仪器当前是否已调整播放。如果您愿意,欢迎您添加其他数据字段。
将调优和当前播放字段设置为false的构造方法。 其他方法
- 调整乐器
- 开始播放乐器,
- 停止乐器演奏。 您认为合适的其他方法(添加至少一种独特方法)。
醇>使用您选择的图表工具(例如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;
}
}
答案 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)
首次开始使用面向对象编程时,请写下问题的小描述,或者至少以具有足够细节的术语来考虑它。
最初,名词应该成为你的班级。名词的抽象组可能是接口的良好候选者,并且动词应该成为与动词“最接近”的类的属于的方法。通过最接近,我的意思是执行动词将需要更多访问类中的属性。