Java需要帮助Error Pizza Order

时间:2015-01-23 00:31:11

标签: java pre

任何人都可以帮助我... 简单的披萨订单程序 我试图在commandpromt中运行它,并且有很多错误 我试图将double更改为int ..但结果仍然是错误

<pre>
public class PizzaOrder
{
public static final String PIZZA_SMALL = "S";
public static final String PIZZA_MEDIUM = "M";
public static final String PIZZA_LARGE = "L";
public static final String PIZZA_COLLOSAL = "C";

public static final double SMALL_DIAMETER = 9;
public static final double MEIDUM_DIAMETER = 13;
public static final double LARGE_DIAMETER = 17;
public static final double COLOSSAL_DIAMETER = 26;

public static final double PRICE_SMALL = 8;
public static final double PRICE_MEDIUM = 11;
public static final double PRICE_LARGE = 15;
public static final double PRICE_COLOSSAL = 21;
public static final double PRICE_TAX = 0.095;
public static final double PRICE_TOPPING = 0.99;

public static final int MAX_TOPPINGS = 8;
public static final int MIN_TOPPINGS = 0;

/**
 * Pizza Order
 *
 * @param args command-line arguments
 */

public static int getDiameter(String pizzaName)
{
    if (pizzaName.equals(PIZZA_SMALL))
    {
        return SMALL_DIAMETER;
    }
    else if (pizzaName.equals(PIZZA_MEIDUM))
    {
        return MEDIUM_DIAMETER;
    }`enter code here`
    else if (pizzaName.equals(PIZZA_LARGE))
    {
        return LARGE_DIAMETER;
    }
    else
    {
        return COLOSSAL_DIAMETER;
    }
}

public static int getBasePrice(String pizzaName)
{
    if (pizzaName.equals(PIZZA_SMALL))
    {
        return PRICE_SMALL;
    }
    else if (pizzaName.equals(PIZZA_MEIDUM))
    {
        return PRICE_MEDIUM;
    }
    else if (pizzaName.equals(PIZZA_LARGE))
    {
        return PRICE_LARGE;
    }
    else
    {
        return PRICE_COLOSSAL;
    }
}

有关于扫描仪的错误太idk为什么 有13-20个错误,主要是因为变量PIZZA_SMALL等 一些错误说&#34;无能的类型&#34;而另一个说&#34;找不到符号&#34;

public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); System.out.println("Enter The Size of Pizza you" + "want: (S/M/L/C)"); String option = keyboard.nextLine().trim().substring(0, 1).toUppercase(); double pizzaPrice; double pizzaSize; if(option.equals(PIZZA_SMALL)) { pizzaPrice = SMALL_DIAMETER; pizzaSize = SMALL_DIAMETER; } else if (option.equals(PIZZA_MEIDUM)) { pizzaPrice = PRICE_MEDIUM; pizzaSize = MEDIUM_DIAMETER; } else if (option.equals(PIZZA_LARGE)) { pizzaPrice = PRICE_LARGE; pizzaSize = LARGE_DIAMETER; } else { option = PIZZA_COLOSSAL; pizzaPrice = PRICE_COLOSSAL; pizzaSize = COLOSSAL_DIAMETER; } System.out.println("Pizza Size: " + option); System.out.println("Enter The Number of Toppings" + "you want:(0-8)"); int pizzaTopping = keyboard.nextInt(); if(pizzaTopping < MIN_TOPPINGS) { pizzaTopping = MIN_TOPPINGS; } else if(pizzaTopping > MAX_TOPPINGS) { pizzaTopping = MAX_TOPPINGS; } else { pizzaTopping = pizzaTopping; } int radius = getDiameter(option) / 2; double squareInches = radius * radius * Math.PI; System.out.println("Pizza Size: " + option + "( " + pizzaSize + "inch -- " + squareInches + " square inches)" ); System.out.println("Toppings: " + pizzaTopping); double priceWithToppings = getBasePrice(option) + pizzaTopping * 9; System.out.println("Price: " + priceWithToppings); double pizzaTax = priceWithToppings * PRICE_TAX; System.out.println("Tax: "+ pizzaTax); double totalPrice = priceWithToppings + pizzaTax; System.out.println("Total Price: " + totalPrice); double priceEachSquareInch = priceWithToppings / squareInches; System.out.println("Price/sq.in.: " + priceEachSquareInch); } }

2 个答案:

答案 0 :(得分:0)

您的PizzaOrder课程应如下:

public class PizzaOrder {
    public static final String PIZZA_SMALL = "S";
    public static final String PIZZA_MEDIUM = "M";
    public static final String PIZZA_LARGE = "L";
    public static final String PIZZA_COLLOSAL = "C";

    public static final double SMALL_DIAMETER = 9;
    public static final double MEDIUM_DIAMETER = 13;
    public static final double LARGE_DIAMETER = 17;
    public static final double COLOSSAL_DIAMETER = 26;

    public static final double PRICE_SMALL = 8;
    public static final double PRICE_MEDIUM = 11;
    public static final double PRICE_LARGE = 15;
    public static final double PRICE_COLOSSAL = 21;
    public static final double PRICE_TAX = 0.095;
    public static final double PRICE_TOPPING = 0.99;

    public static final int MAX_TOPPINGS = 8;
    public static final int MIN_TOPPINGS = 0;

    /**
     * Pizza Order
     *
     * @param args
     *            command-line arguments
     */

    public static double getDiameter(String pizzaName) {
        if (pizzaName.equals(PIZZA_SMALL)) {
            return SMALL_DIAMETER;
        } else if (pizzaName.equals(PIZZA_MEDIUM)) {
            return MEDIUM_DIAMETER;
        } else if (pizzaName.equals(PIZZA_LARGE)) {
            return LARGE_DIAMETER;
        } else {
            return COLOSSAL_DIAMETER;
        }
    }

    public static double getBasePrice(String pizzaName) {
        if (pizzaName.equals(PIZZA_SMALL)) {
            return PRICE_SMALL;
        } else if (pizzaName.equals(PIZZA_MEDIUM)) {
            return PRICE_MEDIUM;
        } else if (pizzaName.equals(PIZZA_LARGE)) {
            return PRICE_LARGE;
        } else {
            return PRICE_COLOSSAL;
        }
    }
}

请注意我在intdouble上将getDiameter的返回类型更正为getBasePrice,因为您尝试返回的常数是双倍的。我还在某些地方修复了“中等”的拼写错误。

要修复扫描仪错误,您必须使用以下方法导入它的包:(在文件顶部添加)

import java.util.Scanner;

main方法应如下所示:(再次,拼写错误变量和投射错误)

public static void main(String[] args)
{
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Enter The Size of Pizza you" + "want: (S/M/L/C)");
    String option = keyboard.nextLine().trim().substring(0,1).toUpperCase();

    double pizzaPrice;
    double pizzaSize;

    if(option.equals(PIZZA_SMALL))
    {
        pizzaPrice = SMALL_DIAMETER;
        pizzaSize = SMALL_DIAMETER;
    }
    else if (option.equals(PIZZA_MEDIUM))
    {
        pizzaPrice = PRICE_MEDIUM;
        pizzaSize = MEDIUM_DIAMETER;
    }
    else if (option.equals(PIZZA_LARGE))
    {
        pizzaPrice = PRICE_LARGE;
        pizzaSize = LARGE_DIAMETER;
    }
    else
    {
        option = PIZZA_COLLOSAL;            
        pizzaPrice = PRICE_COLOSSAL;
        pizzaSize = COLOSSAL_DIAMETER;
    }


    System.out.println("Pizza Size: " + option);
    System.out.println("Enter The Number of Toppings" +
    "you want:(0-8)");

    int pizzaTopping = keyboard.nextInt();      

    if(pizzaTopping < MIN_TOPPINGS)
    {
        pizzaTopping = MIN_TOPPINGS;
    }
    else if(pizzaTopping > MAX_TOPPINGS)
    {
        pizzaTopping = MAX_TOPPINGS;
    }

    double radius = getDiameter(option) / 2;
    double squareInches = radius * radius * Math.PI;
    System.out.println("Pizza Size: " + option + "( " + pizzaSize + 
    "inch -- " + squareInches + " square inches)" );

    System.out.println("Toppings: " + pizzaTopping);

    double priceWithToppings = getBasePrice(option) + pizzaTopping * 9;
    System.out.println("Price: " + priceWithToppings);  

    double pizzaTax = priceWithToppings * PRICE_TAX;
    System.out.println("Tax: "+ pizzaTax);

    double totalPrice = priceWithToppings + pizzaTax;
    System.out.println("Total Price: " + totalPrice);

    double priceEachSquareInch = priceWithToppings / squareInches;
    System.out.println("Price/sq.in.: " + priceEachSquareInch);

    }
 }

如果您想将double投射到int,则需要执行int something = (int)myDouble。在编写变量名时也要注意,因为它们必须与定义完全相同,否则会引发错误。此外,如果方法返回int,但您尝试返回double,则会导致错误,因为返回类型必须与方法中定义的相同。

答案 1 :(得分:0)

首先,仔细查看您的代码,因为您的许多错误都是拼写错误 - 例如toUppercase(),COLLOSAL等。

而且,根据Ben的评论,你使用双精度来表示你的常数,但是你的方法都是整数。 Java不会让你自动执行此操作,因为它会导致小数点丢失后的所有内容,因为整数只是整数。

当这两件事发生变化时,您的代码似乎有效 - 至少可以快速浏览一下。