Ожидаемая ошибка идентификатора в задаче класса пиццы

Я продолжаю получать ожидаемую ошибку идентификатора, где в конце моего кода написано «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);
  }

}

Определите «calcCost» в сигнатуре метода «calcTotal», например int или double. Также можно получать исключения, но вам нужно их понимать и исправлять.

Alok Dubey 08.03.2019 06:52
public double calcTotal(calcCost) -> public double calcTotal(double calcCost)
markspace 08.03.2019 06:57

в первую очередь исправьте отступ вашего кода - трудно читаемый, подверженный ошибкам, ... (calcCost) допустим при вызове метода, но для его объявления вам необходимо объявить параметр (отсутствует его тип)

user85421 08.03.2019 07:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
62
2

Ответы 2

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

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

Добавьте значение Cost к totalCost

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

Я исправил возвращаемое значение, но все равно получаю ту же ошибку. Также имеет смысл изменить calcCost(m_Pizza[i]); в m_Pizza[i].calcCost();

jamie 08.03.2019 07:24

Я упомянул 5 разных проблем - устраните их все

Scary Wombat 08.03.2019 07:33

Вы должны добавить оператор «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, тогда что вернет метод?, поэтому выше приведено исправление.

куча других проблем

Scary Wombat 08.03.2019 07:01

что за аргумент calcCost? причина ошибки спрашивают о

user85421 08.03.2019 07:15

@ Карлос, это двойной. У меня раньше там был дабл, но были ошибки. Когда я удалил его, ошибки исчезли.

jamie 08.03.2019 07:51

@jamie хорошо, мой комментарий был адресован Рахулу, автору этоотвечать. Но та же ошибка public double calcTotal(calcCost) недействительна, для аргумента должен быть тип, например. public double calcTotal(doubel calcCost). То, что вы получаете другую ошибку, не означает, что она правильная - вы спросили, что там за ошибка, она просто повторяется в этом отвечать

user85421 08.03.2019 09:16

Другие вопросы по теме