我正在大学学习基础知识,并且希望对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类中定义的。所以你的代码:
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()); ^^^^^