首页 > 解决方案 > 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 错误

标签: java

解决方案


-你好世界!-

代码有很多问题导致它无法编译。我修复了所有这些(我认为)并写出了问题所在:

  • 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存在Manufacurreturn存在之类的内容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;
    }
}

希望这可以帮助!友情提醒,我对这段代码做了很多修改。你真的应该去看看我采取的步骤并自己进行更改,否则你可能会因为提交不属于你自己的工作而与你的学校发生麻烦。


推荐阅读