java - Java代码问题
问题描述
我的代码有问题。它不会编译,每次我尝试修复它时都会出错。我看不出它有什么问题。我可能只是俯瞰或看起来太努力了。自 2006 年以来,我一直没有完成 Java 编码,直到我上了这门课。这门课并没有过多地涉及编码,我正在努力摆脱记忆。自从一个多星期前我写了这段代码以来,我一直在研究这段代码并查看它。有人可以看看并告诉我我搞砸了什么。已经逾期了。我已经给老师看了,但没有得到任何帮助,而且我的学校目前在这个学期没有这门课的导师。请帮忙!代码和错误如下: 错误:
/*
* File: Guitar2.java
* Author: Eppards,Michael
* Date: June 11, 2018
*/
class Guitar2 {
private int numStrings;
private double guitarLength;
private Color guitarColor;
private Manufacturer guitarManufacturer;
enum Manufacturer {
GIBSON,
FENDER,
IBANEZ;
}
enum Color {
RED,
BLUE,
BLACK;
}
// Default Constructor
private Guitar2() {
this.numStrings = 6;
this.guitarLength = 28.2;
this.guitarColor = Color.RED;
this.guitarManufacturer = Manufacturer.GIBSON;
}
// Argument Constructor
private Guitar2(int numStrings, double guitarLength, Color guitarColor, Manufacturer guitarMaker) {
this.numStrings = numStrings;
this.guitarLength = guitarLength;
this.guitarColor = guitarColor;
this.guitarManufacturer = guitarMaker;
}
// Getters
public int getNumStrings() {
return numStrings;
}
public double getGuitarLength() {
return guitarLength;
}
public Color getGuitarColor() {
return guitarColor;
}
public Manufacturer getGuitarManufacturer() {
return guitarManufacturer;
}
// playGuitar method for 16 randomly selected musical notes
enum Notes {
A(1),
B(4),
C(1),
D(2),
E(0.25),
F(0.5),
G(0.5);
double duration;
private Notes(double duration) {
this.duration = duration;
}
}
public String playGuitar() {
String play = "[";
int a;
int b;
// initiate a random number
Random rn = new Random();
// for loop to select random notes
for (int k = 0; k < 16; k++) {
a = rn.nextInt(7);
b = rn.nextInt(5);
play = play + Notes.values()[a] + "(" + Notes.values()[a].duration + ")";
if (k != 15) play = play + ",";
}
play = play + ']';
return play;
}
// used to return the info in a string
public String toString() {
String infoString = "(numStrings=" + this.numStrings + ", guitarLength=" + this.guitarLength + ",guitarManufacturer=" + this.guitarManufacturer + ",guitarColor=" + (this.guitarColor == null ? "none" : this.guitarColor.name()) + ")";
return infoString;
}
}
Guitar2.java:80: 错误: 找不到符号 Random rn = new Random(); ^ 符号:类随机位置:类 Guitar2 Guitar2.java:80:错误:找不到符号 Random rn = new Random(); ^ 符号:class 随机位置:class Guitar2 2 错误
解决方案
-你好世界!-
代码有很多问题导致它无法编译。我修复了所有这些(我认为)并写出了问题所在:
Public
需要改为public
- 第二个
Guitar
构造函数缺少它的所有参数。 - 枚举需要通过它们的名称来引用,你不能只输入它们的值。
- 你的花括号到处都是。关闭比打开多得多,所以我在最后删除了一堆,还有一些被扔到了课堂中间。
- 方法必须在类中。
- 枚举不能在方法内部声明,只能在类内部声明。
- 变量声明必须在变量的类型和名称之间有一个空格。示例:
int_a;
需要int a;
- 您的
Duration
枚举没有接受和 int 的构造函数。 - 根据其索引获取枚举的随机值是通过做来完成的
Notes.values()[a];
,而不是Notes[a];
- 不知道该
return Optional.empty();
行应该在哪里,所以我将其删除。 - 您缺少
Random
课程的导入。 - 字符串不能在多行上。
.orElse()
不是一种方法。删除了这个,不确定它应该做什么。colorName()
不是一种方法。我把它改成:(this.guitarColor == null ? "none" : this.guitarColor.name())
。- 方法中的变量名称与
toString()
您尝试返回的名称不同。我将它们都更改为infoString
. - 您有大量的拼写错误,即诸如
Manufacturer
存在Manufacur
和return
存在之类的内容rturn
。 - 初始化变量时,后面必须有一个空格
new
。 - 您的 getter 方法没有返回正确的类型。
- 变量的名称
numString
被反复称为numStrings
。我将 s 添加到原始变量声明中。
以下是您确实应该更改但您不需要更改的内容列表。
- 所有枚举名称都应全部大写。
- 方法名称应使用
camelCase
. 示例:myVal
会有一个名为getMyVal()
. - 在方法、构造函数和类型之间有空行。
- 在评论开始后有一个空格。示例:
// Comment
坏示例://Comment
- 对枚举有某种排序模式。对于注释,它应该是按字母顺序排列的。
- 笔记的持续时间不需要另一个枚举。这可以在便笺本身中轻松完成。
- 没有必要做
String.valueOf(someObject)
串联。最好不要这样做someObject.toString()
,someObject
因为运行时会为您执行该操作。 +
和等算术运算符前后应该有一个空格-
。
我强烈建议您阅读一些基本的 Java 教程并查看Google Java 样式指南。这是我使用的,并且我确信很多人使用它来确定代码的外观。
通过所有更改并正确使用样式,您的代码如下所示:
import java.util.Random;
/*
* File: Guitar.java
* Author: Eppards,Michael
* Date: June 11, 2018
*/
class Guitar {
private int numStrings;
private double guitarLength;
private Color guitarColor;
private Manufacturer guitarManufacturer;
enum Manufacturer {
GIBSON,
FENDER,
IBANEZ;
}
enum Color {
RED,
BLUE,
BLACK;
}
enum Notes {
A(1),
B(4),
C(1),
D(2),
E(0.25),
F(0.5),
G(0.5);
double duration;
private Notes(double duration) {
this.duration = duration;
}
}
// Default Constructor
private Guitar() {
this.numStrings = 6;
this.guitarLength = 28.2;
this.guitarColor = Color.RED;
this.guitarManufacturer = Manufacturer.GIBSON;
}
// Argument Constructor
private Guitar(int numStrings, double guitarLength, Color guitarColor, Manufacturer guitarMaker) {
this.numStrings = numStrings;
this.guitarLength = guitarLength;
this.guitarColor = guitarColor;
this.guitarManufacturer = guitarMaker;
}
// Getters
public int getNumStrings() {
return numStrings;
}
public double getGuitarLength() {
return guitarLength;
}
public Color getGuitarColor() {
return guitarColor;
}
public Manufacturer getGuitarManufacturer() {
return guitarManufacturer;
}
// playGuitar method for 16 randomly selected musical notes
public String playGuitar() {
String play = "[";
int a;
int b;
// initiate a random number
Random rn = new Random();
// for loop to select random notes
for (int k = 0; k < 16; k++) {
a = rn.nextInt(7);
b = rn.nextInt(5);
play = play + Notes.values()[a] + "(" + Notes.values()[a].duration + ")";
if (k != 15) play = play + ",";
}
play = play + ']';
return play;
}
// used to return the info in a string
public String toString() {
String infoString = "(numStrings=" + this.numStrings + ", guitarLength=" + this.guitarLength + ",guitarManufacturer=" + this.guitarManufacturer + ",guitarColor=" + (this.guitarColor == null ? "none" : this.guitarColor.name()) + ")";
return infoString;
}
}
希望这可以帮助!友情提醒,我对这段代码做了很多修改。你真的应该去看看我采取的步骤并自己进行更改,否则你可能会因为提交不属于你自己的工作而与你的学校发生麻烦。
推荐阅读
- swift - 如何在 iOS 应用中本地化下载的图像
- c - 'out'、'in' 的操作数类型不匹配
- java - 我的代码忽略了后续的 if 和 while 条件
- db2 - db2 删除所有非字母数字,包括不可打印和特殊字符
- gensim - 有没有办法从 KeyedVectors 词汇中删除一个单词?
- php - 从另一个脚本获取用户登录时的表列值
- python - 如果熊猫数据框无法分配给函数调用
- syntax-highlighting - Is it possible to set language on a per file basis in RubyMine?
- javascript - 使用Vue读取当前目录中的文件
- matlab - 使用 for 循环计算累积和