为对象创建一个类

时间:2013-12-10 05:16:54

标签: java class object parameters double

我正在创建一个将创建Pizza对象的类。它考虑了它的大小(直径,以英寸为单位),切片数量,馅饼的成本和比萨饼的类型。

这是我第一次做这样的事情,所以我遇到了一些混乱。

以下是Pizza类的代码:

    class Pizza
{

    //instance variables
    int size;
    int slices;
    int pieCost;
    String typeOfPizza;


    //constructors
    Pizza (String typeOfPizza)
    {
        System.out.println (typeOfPizza);
    }

    Pizza ()
    {
        System.out.println ("pizza");
    }

    Pizza (int s, int sl, int c)
    {
        size = s;
        slices = sl;
        pieCost = c;
        typeOfPizza = "????";
    }

    Pizza (String name, int s, int sl, int c)
    {
        typeOfPizza = name;
        size = s;
        slices = sl;
        pieCost = c;
    }

    //behavior

    double areaPerSlice(int size, int slices)
    {
        double wholeArea = Math.PI * Math.pow ((size/2), 2);
        double sliceArea = wholeArea/slices;
        return sliceArea;
    }

    double costPerSlice (double pieCost, int slices)
    {
        double sliceCost = pieCost/slices; 
        return sliceCost;
    }

    double costPerSquareInch (double sliceCost, double sliceArea)
    {
        double costPerSquareInch = sliceCost/sliceArea;
    }

    String getName(String name)
    {
        String typeOfPizza = name;
        return typeOfPizza;
    }
}

以下是调用Pizza类的main方法的代码:

class PizzaTest
{
    public static void main (String [] args)
    {
        String typeOfPizza = "Cheese";
        int size = 10;                  //in inches, referring to the diameter of the pizza
        int numberOfSlices = 10;            //number of slices
        int costOfPie = 20;

        Pizza myPizza = new Pizza (typeOfPizza, size, numberOfSlices, costOfPie);

        System.out.printf ("Your %s pizza has %.2f square inches per slice.\n", myPizza.getName(),
                   myPizza.areaPerSlice() );

        System.out.printf ("One slice costs $%.2f, which comes to $%.3f per square inch.\n", 
                   myPizza.costPerSlice(), myPizza.costPerSquareInch());
    }
}

基本上,输出应打印以下内容:

你的意大利辣香肠披萨每片20.11平方英寸。 一片成本为1.05美元,即每平方英寸0.052美元。

可以忽略这些值,它们来自具有不同参数的示例。当我去编译这个程序时,我得到以下错误:

getName(java.lang.String) in Pizza cannot be applied to ()
        System.out.printf ("Your %s pizza has %.2f square inches per slice.\n", myPizza.getName(),
                                                                                       ^
PizzaTest.java:20: areaPerSlice(int,int) in Pizza cannot be applied to ()
                   myPizza.areaPerSlice() );
                          ^
PizzaTest.java:23: costPerSlice(double,int) in Pizza cannot be applied to ()
                   myPizza.costPerSlice(), myPizza.costPerSquareInch());
                          ^
PizzaTest.java:23: costPerSquareInch(double,double) in Pizza cannot be applied to ()
                   myPizza.costPerSlice(), myPizza.costPerSquareInch());

关于如何解决此问题的任何输入?感谢您帮助初学程序员!

6 个答案:

答案 0 :(得分:1)

更改

String getName(String name)
{
    String typeOfPizza = name;
    return typeOfPizza;
}

String getName()
{
    return typeOfPizza;
}

double costPerSquareInch (double sliceCost, double sliceArea){
    double costPerSquareInch = sliceCost/sliceArea;
}

double costPerSquareInch (double sliceCost, double sliceArea){
    return costPerSquareInch = sliceCost/sliceArea;
}

    System.out.printf ("Your %s pizza has %.2f square inches per slice.\n", myPizza.getName(),
               myPizza.areaPerSlice() );

    System.out.printf ("One slice costs $%.2f, which comes to $%.3f per square inch.\n", 
               myPizza.costPerSlice(costOfPie,numberOfSlices), myPizza.costPerSquareInch(sliceCost,sliceArea));

    System.out.printf ("Your %s pizza has %.2f square inches per slice.\n", myPizza.getName(),
               myPizza.areaPerSlice(size, numberOfSlices) );

    System.out.printf ("One slice costs $%.2f, which comes to $%.3f per square inch.\n", 
               myPizza.costPerSlice(costOfPie,numberOfSlices), myPizza.costPerSquareInch(sliceCost,sliceArea));

答案 1 :(得分:0)

您的函数采用非可选字符串。

String getName(String name)
{
    String typeOfPizza = name;
    return typeOfPizza;
}

应该是两个功能

String getName() { // needed a string before.
  return typeOfPizza;
}

void setName(String name) {
  typeOfPizza = name;
}

此外,您可能应该调用该字段name或这些方法应为getTypeOfPizzasetTypeOfPizza

答案 2 :(得分:0)

我认为你的Pizza课程不会编译。

 double costPerSquareInch (double sliceCost, double sliceArea){
    double costPerSquareInch = sliceCost/sliceArea;
    // missing return.
}

首先使那个正确。

然后

myPizza.getName() // need input argument as String 

然后这应该是

myPizza.getName("inputString");

另外两个也有相同的输入参数问题。

 myPizza.areaPerSlice()// two int input arguments. 

更正为

 myPizza.areaPerSlice(1,2);

下一个

 myPizza.costPerSlice();// double and int input arguments. 

正确

myPizza.costPerSlice(2.0,2);

最后

myPizza.costPerSquareInch() // two double input arguments.

更正为

myPizza.costPerSquareInch(2.0,1.0) ; 

答案 3 :(得分:0)

错误说明了一切......

double areaPerSlice(int size, int slices)
    {
        double wholeArea = Math.PI * Math.pow ((size/2), 2);
        double sliceArea = wholeArea/slices;
        return sliceArea;
    }

System.out.printf ("Your %s pizza has %.2f square inches per slice.\n", myPizza.getName(),
           myPizza.areaPerSlice() );

在方法定义中,您正在使用2个args ...但在调用时您使用的是0个参数...这也适用于其他错误。

答案 4 :(得分:0)

problem

您的功能是要求参数。因为您没有getName函数single parameter

Solution 

您必须定义类似

的方法
String getName( )
{
    return typeOfPizza;
}

同样你也需要为这些电话做。

myPizza.areaPerSlice()
myPizza.costPerSlice()
myPizza.costPerSquareInch() 

答案 5 :(得分:0)

public class Pizza
{

//instance variables
pirvate int size;
private int slices;
private int pieCost;
private String typeOfPizza;


//constructors
public Pizza (String typeOfPizza)
{
    System.out.println (typeOfPizza);
}

public Pizza ()
{
    System.out.println ("pizza");
}

public Pizza (int size, int slices, int pieCost)
{
    this.size = size;
    this.slices = slices;
    this.pieCost = pieCost;
    typeOfPizza = "????";
}

public Pizza (String typeOfPizza, int size, int slices, int pieCost)
{
    this.typeOfPizza = typeOfPizza
    this.size = size;
    this.slices = slices;
    this.pieCost = pieCost;
}

//behavior

public double areaPerSlice(int size, int slices)
{
    double wholeArea = Math.PI * Math.pow ((size/2), 2);
    double sliceArea = wholeArea/slices;
    return sliceArea;
}

public double costPerSlice (double pieCost, int slices)
{
    double sliceCost = pieCost/slices; 
    return sliceCost;
}

public double costPerSquareInch (double sliceCost, double sliceArea)
{
    double costPerSquareInch = sliceCost/sliceArea;
}

public String getName(String name)
{
    String typeOfPizza = name;
    return typeOfPizza;
}
}


class PizzaTest
{
    public static void main (String [] args)
    {
    String typeOfPizza = "Cheese";
    int size = 10;                  //in inches, referring to the diameter of the pizza
    int numberOfSlices = 10;            //number of slices
    int costOfPie = 20;

    Pizza myPizza = new Pizza (typeOfPizza, size, numberOfSlices, costOfPie);

    System.Out.Printf ("Your"+myPizza.getName()+" pizza has "+myPizza.areaPerSlice() +".2f square inches per slice.\n");

    System.Out.Printf ("One slice costs "+myPizza.costPerSlice()+".2f, which comes to "+myPizza.costPerSquareInch()+".3f per square inch.\n");
}
}

希望这会对你有所帮助。