2014-09-23 3 views
0

Это довольно простая программа. Когда я пытаюсь напечатать метод summaryOutput и метод billOutput, я получаю ошибки, говоря, что параметры не могут быть разрешены как переменная.Параметры не могут быть разрешены как переменная?

public class PizzaDriver{ 

    public static void main(String[] args) { 
      PizzaOrder order = new PizzaOrder(); 
      PizzaOutput output = new PizzaOutput(); 
      PizzaInput input = new PizzaInput(); 

      System.out.println(output.menuOutput()); 
      input.readInput(order); 

      System.out.println(summaryOutput1 = output.summaryOutput (numCheese, numPepperoni, numSausage, numVegetarian)); 
      System.out.println(output.billOutput(String billOutput)); 
    } 
} 

общественного класса PizzaOutput {

public String menuOutput() 
{ 
    String menuOutput1 = "Item  \t Price \nCheese \t $2.40 \n Sausage \t $3.00 \nPepperoni \t $3.00 \nVegertarian \t $3.00"; 

    return menuOutput1; 

} 

public void summaryOutput(int numCheese,int numPepperoni,int numSausage,int numVegetarian) 
{ 
    System.out.println("Cheese: " + numCheese); 

    System.out.println("Pepperoni: " + numPepperoni); 

    System.out.println("Sausage: " + numSausage); 

    System.out.println("Vegetarian: " + numVegetarian); 


} 

public void billOutput(double subTotal, double tax, double carryOut, double totalBill) 
{ 
    System.out.println("Subtotal : " +subTotal); 

    System.out.println("Tax : " + tax); 

    System.out.println("carryOut : " +carryOut); 

    System.out.println("Total Bill: " + totalBill); 
} 

импорт java.util.Scanner;

общественный класс PizzaInput { Сканер клавиатуры = новый сканер (System.in);

public int numCheese, numPepperoni, numSausage, numVegetarian; 



public void readInput(PizzaOrder order) 
{ 
    System.out.print("How many Cheese Pizzas would you like?"); 
    int numCheese = keyboard.nextInt(); 

    order.setCheese(numCheese); 

    System.out.print("How many Pepperoni pizzas would you like?"); 
    int numPepeperoni = keyboard.nextInt(); 

    order.setPepperoni(numPepperoni); 

    System.out.print("How many Sausage pizzas would you like?"); 
    int numSausage = keyboard.nextInt(); 

    order.setSausage(numSausage); 

    System.out.print("How many Vegetarian pizzas would you like?"); 
    int numVegetarian = keyboard.nextInt(); 

    order.setVegetarian(numVegetarian); 



    } 

}

общественный класс PizzaOrder { частных окончательный двойной CHEESE_PRICE = 2,40;

private final double PEPPERONI_PRICE = 3.00; 

private final double SAUSAGE_PRICE = 3.00; 

private final double VEGETARIAN_PRICE = 3.50; 

private final double SALES_TAX = .025; 

private final double CARRY_OUT = .10; 


public int numCheese, numPepperoni, numSausage, numVegetarian; 


public int getCheese() 
{ 
    return numCheese; 
} 

public void setCheese(int numCheese) 
{ 
    this.numCheese=numCheese; 
} 


public int getPepperoni() 
{ 
    return numPepperoni; 
} 

public void setPepperoni(int numPepperoni) 
{ 
    this.numPepperoni=numPepperoni; 
} 


public int getSausage() 
{ 
    return numSausage; 
} 

public void setSausage(int numSausage) 
{ 
    this.numSausage= numSausage; 
} 

public int getVegetarian() 
{ 
    return numVegetarian; 
} 

public void setVegetarian(int numVegetarian) 
{ 
    this.numVegetarian = numVegetarian; 
} 






public double calculateSubTotal() 
{ 
    double cheeseTotal= numCheese * CHEESE_PRICE; 

    double pepperoniTotal = numPepperoni * PEPPERONI_PRICE; 

    double sausageTotal = numSausage * SAUSAGE_PRICE; 

    double vegetarianTotal = numVegetarian * VEGETARIAN_PRICE; 

    double subTotal = cheeseTotal + pepperoniTotal + sausageTotal + vegetarianTotal; 

    double tax = (subTotal) * SALES_TAX; 

    double totalBill = (tax + subTotal) * CARRY_OUT; 

    return totalBill; 

} 

}

+2

У вас нет правильного синтаксиса для sysout – Lokesh

+1

где ваши numcheese, numPepperoni объявлены и инициализированы? отредактируйте это в своем сообщении – Vihar

+0

У меня есть 4 класса. Пользователь вводит значения для этих переменных. Я новичок в этом сайте и не знаю, как отредактировать мой пост. Код – JimM33

ответ

0

когда вы говорите следующее

output.summaryOutput (numCheese, numPepperoni, numSausage, numVegetarian) 

он будет пытаться найти то же имя переменной (numCheese, numPepperoni, numSausage, numVegetarian) в текущем метода/класса, которые не являются и, следовательно, он не может понять это.

Уточнитните те, либо передать его правильно

также Ther нет определения для summaryOutput1 и, как @pooja предложил

System.out.println(output.billOutput(String billOutput));//where is the param billOutput? 

должен быть как

System.out.println(output.billOutput(billOutput)); 
+0

не может найти переменные в первую очередь.поэтому определите их –

+0

Я понимаю @ JimM33, но, как я предложил в своем ответе, не могли бы вы объяснить, как ваш основной метод будет знать о переменной, которая там нигде не определена? нам нужно определить их, если мы хотим использовать его для 'numCheese', как он узнает, что это такое? это String/int/long? –

+0

Я новый студент java. Я понимаю, что они не определены в основном методе, но я не уверен, как это сделать. Переменные определены в методе readInput. Как передать эти значения в мой основной метод? – JimM33

0

Удалить "String" из следующую строку, когда вы вызываете метод и не определяете его. Кроме того, billOutput был дважды. Избегайте конфликтов имен.

System.out.println(output.billOutput(String billOutput)); 
0

Пройдите через следующий набор кода и идентификации меновщики, которые вы должны сделать внутри вашего приложения

public class PizzaOutput { 

    private int numCheese; 
    private int numPepperoni; 
    private int numSausage; 
    private int numVegetarian; 

    public PizzaOutput(){} 

    public PizzaOutput(int numSausage, int numCheese, int numPepperoni, int numVegetarian) { 
     this.numSausage = numSausage; 
     this.numCheese = numCheese; 
     this.numPepperoni = numPepperoni; 
     this.numVegetarian = numVegetarian; 
    } 

    public int getNumCheese() { 
     return numCheese; 
    } 

    public void setNumCheese(int numCheese) { 
     this.numCheese = numCheese; 
    } 

    public int getNumPepperoni() { 
     return numPepperoni; 
    } 

    public void setNumPepperoni(int numPepperoni) { 
     this.numPepperoni = numPepperoni; 
    } 

    public int getNumSausage() { 
     return numSausage; 
    } 

    public void setNumSausage(int numSausage) { 
     this.numSausage = numSausage; 
    } 

    public int getNumVegetarian() { 
     return numVegetarian; 
    } 

    public void setNumVegetarian(int numVegetarian) { 
     this.numVegetarian = numVegetarian; 
    } 

    public String summaryOutput(int numSausage, int numCheese, int numPepperoni, int numVegetarian){ 
     setNumSausage(numSausage); 
     setNumCheese(numCheese); 
     setNumPepperoni(numPepperoni); 
     setNumVegetarian(numVegetarian); 

     return "Sausage : "+ getNumSausage()+ " Cheese : "+getNumCheese()+ " Pepeeroni : "+ getNumPepperoni()+ " Vegetarian : "+getNumVegetarian(); 
    } 

    public String billOutPut(String bOutput){ 
     // Enter here your code to get the bill 
     return "Bill Output"; // return the bill as a String 
    } 
} 

-> обратить внимание на переменные экземпляра декларации
-> Ваш не объявлен операторы return внутри методов «summaryOutput» и «billOutPut». Поэтому вы должны объявить оператор return как единый оператор
-> Согласно вашей структуре кода, для вызова обоих методов достаточно получить и не нужно вызывать оба метода внутри SOP

+0

все эти изменения все в классе pizzaOutput ? – JimM33

+0

Yha. Это зависит от сценария и реализации других классов. –

+0

Обратите внимание на архитектуру приложения. У ваших классов были двойные коды. Попытайтесь удалить эти вещи. –

Смежные вопросы