为什么会出现错误“类型的方法未定义”?

我正在大学学习基础知识,并且希望对Eclipse中的以下错误有所帮助:“对于类型ShopCLI,未定义方法getCost()”&

"Exception in thread "main" java.lang.Error: Unresolved compilation problem:

The method getCost() is undefined for the type ShopCLI

at components.ShopCLI.main(ShopCLI.java:39)

这是我的代码

public class ShopCLI {

public static void main(String[] args) {

ArrayList<Order> ord = new ArrayList<>();

System.out.println("Welcome to Sandwich Shop CLI V1!");

System.out.println("Please Choose and Option by Typing the Appropriate Number from the List");

System.out.println("1.New Order");

Scanner sc = new Scanner(System.in);

int choice = sc.nextInt();

System.out.println("Please Choose an Outer From the List: ");

System.out.println("Press 1 to Continue or 2 to Exit");

int Sandwich = sc.nextInt();

System.out.println("Outer Options are Bun, Bread or Brioche");

String inputOuter = sc.next();

System.out.println("Inner Options are Ham, Cheese or Cucumber");

String inputInner = sc.next();

System.out.println("Sauce Options are Mayo, Butter or Marmite");

String inputSauce = sc.next();

if (Sandwich == 1){

ord.add(new Order(1, inputOuter, inputInner, inputSauce, 0));

System.out.println("You Made a " + inputInner + " with " + inputSauce + " Sandwich on " + inputOuter);

System.out.println("This Will Cost " + getCost());

}

else if (Sandwich == 2){

System.out.println("Exited.");

}

}

}

public class Sandwich {

//Fields

ArrayList<Sandwich> sandwich = new ArrayList<>();

String outer;

String inner;

String sauce;

//Constructor

public Sandwich(String outer, String inner, String sauce){

this.outer = outer;

this.inner = inner;

this.sauce = sauce;

}

//Methods

public String getOuter(){

return outer;

}

public String getInner(){

return inner;

}

public String getSauce(){

return sauce;

}

public void setOuter(String repOuter){

outer = repOuter;

}

public void setInner(String repInner){

inner = repInner;

}

public void setSauce(String repSauce){

sauce = repSauce;

}

public void createSandwich(String outer, String inner, String sauce){

sandwich.add(new Sandwich(outer, inner, sauce));

}

public void setSandwich(String repOuter, String repInner, String repSauce){

outer = repOuter;

inner = repInner;

sauce = repSauce;

}

public void resetOrder(){

sandwich.removeAll(sandwich);

}

}

public class Order extends Sandwich {

//Fields

int OrderId;

double Cost;

//Constructor

public Order(int OrderId, String outer, String inner, String sauce, int Cost) {

super(outer, inner, sauce);

this.OrderId = OrderId;

this.Cost = Cost;

}

//Methods

public int getOrderId(){

return this.OrderId;

}

public double getCost(){

return this.Cost;

}

public void setOrderId(int repOrderID){

this.OrderId = repOrderID;

}

public void overrideCost(int Cost){

this.Cost = Cost;

}

public void setOrder(int repOrderId, String repOuter, String repInner, String repSauce){

this.OrderId = repOrderId;

this.outer = repOuter;

this.inner = repInner;

this.sauce = repSauce;

double calcCost;

double outerCost = 0;

double innerCost = 0;

double sauceCost = 0;

//Outer Cost

if(repOuter == "Bun")

{

outerCost = 0.5;

}

else if(repOuter == "Bread")

{

outerCost = 0.25;

}

else if(repOuter == "Brioche")

{

outerCost = 0.75;

}

else

{

System.out.println("Invalid Bread Type");

}

//Inner cost

if(repInner == "Ham")

{

innerCost = 0.5;

}

else if(repInner == "Cheese")

{

innerCost = 0.25;

}

else if(repInner == "Cucumber")

{

innerCost = 0.75;

}

else

{

System.out.println("Invalid Filling Type");

}

//Sauce Cost

if(repSauce == "Mayo")

{

sauceCost = 0.5;

}

else if(repSauce == "Butter")

{

sauceCost = 0.25;

}

else if(repSauce == "Marmite")

{

sauceCost = 0.75;

}

else

{

System.out.println("Invalid Sauce Type");

}

calcCost = outerCost + innerCost + sauceCost;

this.Cost = calcCost;

}

}

回答:

getCost方法是在订单类中定义的,而不是在ShopCLI类中定义的。所以你的代码:

ord.add(new Order(1, inputOuter, inputInner, inputSauce, 0));

System.out.println("You Made a " + inputInner + " with " + inputSauce + " Sandwich on " + inputOuter);

System.out.println("This Will Cost " + getCost());

应该改为

Order order = new Order(1, inputOuter, inputInner, inputSauce, 0);

ord.add(order);

System.out.println("You Made a " + inputInner + " with " + inputSauce + " Sandwich on " + inputOuter);

System.out.println("This Will Cost " + order.getCost());

^^^^^

以上是 为什么会出现错误“类型的方法未定义”? 的全部内容, 来源链接: utcz.com/qa/399728.html

回到顶部