Ошибка ожидаемого идентификатора в задаче класса пиццы - PullRequest
0 голосов
/ 08 марта 2019

Я получаю ошибку ожидаемого идентификатора, в которой говорится "public double calcTotal (calcCost) {" в конце моего кода.Обратите внимание, что я вызываю метод из другого класса.В чем проблема?Также, пожалуйста, не стесняйтесь указывать на любые другие ошибки, которые вы видите в моем коде.Я боюсь, что как только я исправлю эту ошибку, появятся еще 10, когда я попытаюсь снова скомпилировать.Спасибо!

public class PizzaOrder {
  private String [] m_Pizza; //array for base type Pizza
  private int m_numPizzas;

  //default constructor
  public PizzaOrder() {
    m_Pizza = null;//new String[0]
    m_numPizzas = 0;
  }

  //overloaded Pizza
  public PizzaOrder(String [] Pizza, int numPizzas) {
    m_Pizza = Pizza;
    m_numPizzas = numPizzas;
  }

  //public methods
  public void setPizza (String [] Pizza){
    m_Pizza = Pizza;
  }
  public String getPizza () {
    return m_Pizza;
  }
  public void setNumPizzas (int numPizzas) {
    m_numPizzas = numPizzas;
  }
  public int getNumPizzas () {
    return numPizzas;
  }

  public void addPizza(Pizza pizza) {
    if (m_Pizza.length() <= m_numPizzas) {
      m_Pizza.length() = m_numPizzas;
      //m_Pizza[m_numPizzas] = Pizza; //pizza array has same amount of items as numPizzas
      m_numPizzas++;
    }
    else {
      System.out.println("Adding an additional pizza was unuccessful.");
    }
  }

public double calcTotal(calcCost){
    double totalCost = 0;
    double Cost = calcCost(); //calling calcCost function
    for (int i = 0; i < m_Pizza.length(); i++) { //goes through array
      calcCost(m_Pizza[i]); //calculates cost for each pizza in array
      Cost += totalCost; //adds each cost to total
    return totalCost;
    }
  }

  public String toString() {
    double total = calcTotal(calcCost); //stores calcTotal function in total variable
    System.out.println("You ordered a " + m_Pizza + ". Your total cost is: " + total);
  }

}

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Да, похоже, у этого метода много проблем, Я добавил комментарии в строке

public double calcTotal(calcCost){
  double totalCost = 0;
  double Cost = calcCost(); // is there really a zero parameter method ?
  for (int i = 0; i < m_Pizza.length(); i++) { 
    calcCost(m_Pizza[i]); // this takes a parameter but does not use the return value
    Cost += totalCost; // totalCost is always zero, do you mean totalCost += Cost; ?
    return totalCost;  // you are returning this value with in the for loop
  }

  // compile error here as it is expecting some value to be returned

}

Подсказки: переместите возвращаемое значение за пределы вашего цикла

Сохранить значение calCost в Cost

Добавить значение стоимости к общей стоимости

Кроме того, как @markspace упоминает, что с параметром этого метода что-то не так, на самом деле это нужно?

0 голосов
/ 08 марта 2019

Вы должны добавить оператор "return" в конце метода после завершения цикла for.

 public double calcTotal(calcCost){
    double totalCost = 0;
    double Cost = calcCost(); //calling calcCost function
    for (int i = 0; i < m_Pizza.length(); i++) { //goes through array
      calcCost(m_Pizza[i]); //calculates cost for each pizza in array
      Cost += totalCost; //adds each cost to total

    }
    return totalCost;
  }

Подумайте о том, что когда переменная m_Pizza пуста, управление не будет выполняться в цикле for, тогда что будет возвращать метод?

...