【问题标题】:Java Error: class, interface, or enum expected (Pizza order program)Java 错误:需要类、接口或枚举(披萨订购程序)
【发布时间】:2015-06-16 20:42:36
【问题描述】:

在 java 中处理 Pizza/Pizza 订单程序时,我不断收到 13 个错误:预期的类、接口或枚举。我知道问题应该出在大括号上,但我一直没能找到它。我希望另一组(或多组)不同的眼睛能够发现错误。

public Pizza (String size, int cheese, int pepperoni, int ham) {
    this.size = size;

    if (cheese < 0) {
        this.cheese = 0;
    }
    else {
        this.cheese = cheese;
    }
    if (pepperoni < 0) {
        this.pepperoni = 0;
    }
    else {
        this.pepperoni = pepperoni;
    }
    if (ham < 0) {
        this.ham = 0;
    }
    else {
        this.ham = ham;
    }
}   

public double calcCost() {
    if (size.equals("small")) {
        return 10 + 2 * (ham + cheese + pepperoni);
    }
    else if (size.equals("medium")) {
        return 12 + 2 * (ham + cheese + pepperoni);
    }
    else if (size.equals("large")) {
        return 14 + 2 * (ham + cheese + pepperoni);
    }
    else {
        System.out.println("Invalid size");
    }
}

public class PizzaOrder {
    private Pizza pizza1;
    private Pizza pizza2;
    private Pizza pizza3;

    public PizzaOrder() {
        numPizzas = 1;
        pizza1 = new Pizza();
        pizza2 = new Pizza();
        pizza3 = null;
    }

    public PizzaOrder (int numPizzas, Pizza pizza1, Pizza pizza2, Pizza pizza3) {
        this.numPizzas = numPizzas;
        this.pizza1 = pizza1;
        this.pizza2 = pizza2;
        this.pizza3 = pizza3;
    }

    public void setNumPizzas (int numPizzas) {
        if (numPizzas > 3) {
            this.numPizzas = 3;
        }
        else if (numPizzas < 1) {
            this.numPizzas = 0;
        }
        else {
            this.numPizzas = NumPizzas; 
        }
    }

    public void setPizza1 (Pizza pizza1) {
        this.pizza1 = pizza1;
    }

    public void setPizza2 (Pizza pizza2) {
        this.pizza2 = pizza2;
    }

    public void setPizza3 (Pizza pizza3) {
        this.pizza3 = pizza3;
    }

    public double calcTotal() {
        double total = pizza1.calcCost();

        if (numPizzas >= 2) {
            total += pizza2.calcCost();
        }

        if (numPizzas == 3) {
            total += pizza3.calcCost();
        }

        return total;
    }
}

public class MainMethodClassName {
    public static void main (String args[]) {
        Pizza pizza1 = new Pizza("large", 1, 0, 1);
        Pizza pizza2 = new Pizza("medium", 2, 2, 0);

        PizzaOrder order = new PizzaOrder();

        order.setNumPizzas(2);
        order.setPizza1(pizza1);
        order.setPizza2(pizza2);

        double total = order.calcTotal;

        System.out.println("First Pizza: ");
        System.out.println(pizza1.getDescription());
        System.out.println("Second Pizza: ");
        System.out.println(pizza2.getDescription());
        System.out.println("Total price: $" + total);
    }
}

错误在第 1、4、6、9、12、15、18、21、24、27、30、33 和 36 行

感谢您的帮助;我真的很感激!

【问题讨论】:

  • 这是你的整个源文件吗?如果是这样,您在类之外定义了方法。也许您的类定义应该移到文件的顶部,或者您需要另一个类定义。
  • this.numPizzas = NumPizzas; 右侧的大小写似乎错误。
  • 您的前两个方法不在一个类中。需要在开头加public class Pizza {,下一节课开始前加}
  • 当然,你真的应该在一个单独的文件中定义每个类。

标签: java class interface enums


【解决方案1】:

括号不是你唯一的问题。

public double calcCost() {
    if (size.equals("small")) {
        return 10 + 2 * (ham + cheese + pepperoni);
    }
    else if (size.equals("medium")) {
        return 12 + 2 * (ham + cheese + pepperoni);
    }
    else if (size.equals("large")) {
        return 14 + 2 * (ham + cheese + pepperoni);
    }
    else {
        System.out.println("Invalid size");
    }
}

这不会像在else 中那样编译,当指定返回类型时,你什么都不返回,这是非法的。

至于括号,既然你给了我们一行并假设我们应该能够用你粘贴的代码正确地计算它们。我相信您将所有这些都复制到了一个文件中。

如果是这样,那么问题在于前两个方法不在一个类中,这在 Java 中是非法的。要么将它们放在其他类中,要么将它们添加到已经存在的类中(如果这是它们所在的位置)。

此外,即使这样编译,也不应在一个文件中声明所有类,因为这样维护起来很糟糕。

【讨论】:

    【解决方案2】:

    就像他说的。 当你构建类时,它们应该封装一个想法

    public class pizza{
    
    public static pizzaSize(){
    }
    public static toppings(){
    }
    }
    

    如此等等。如果您不使方法无效,那么它们必须有返回,如果您使它们成为静态,那么您可以通过调用“class.method()”在 main 中使用它们而无需即时 katsina

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      相关资源
      最近更新 更多