我正在创建一个将创建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());
关于如何解决此问题的任何输入?感谢您帮助初学程序员!
答案 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
或这些方法应为getTypeOfPizza
和setTypeOfPizza
。
答案 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");
}
}
希望这会对你有所帮助。