Я продолжаю получать ожидаемую ошибку идентификатора, где в конце моего кода написано «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);
}
}
public double calcTotal(calcCost) -> public double calcTotal(double calcCost)в первую очередь исправьте отступ вашего кода - трудно читаемый, подверженный ошибкам, ... (calcCost) допустим при вызове метода, но для его объявления вам необходимо объявить параметр (отсутствует его тип)




Да, похоже, с этим методом много проблем, Я добавил комментарии в строке
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();
Я упомянул 5 разных проблем - устраните их все
Вы должны добавить оператор «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, тогда что вернет метод?, поэтому выше приведено исправление.
куча других проблем
что за аргумент calcCost? причина ошибки спрашивают о
@ Карлос, это двойной. У меня раньше там был дабл, но были ошибки. Когда я удалил его, ошибки исчезли.
@jamie хорошо, мой комментарий был адресован Рахулу, автору этоотвечать. Но та же ошибка public double calcTotal(calcCost) недействительна, для аргумента должен быть тип, например. public double calcTotal(doubel calcCost). То, что вы получаете другую ошибку, не означает, что она правильная - вы спросили, что там за ошибка, она просто повторяется в этом отвечать
Определите «calcCost» в сигнатуре метода «calcTotal», например int или double. Также можно получать исключения, но вам нужно их понимать и исправлять.