2015-01-11 3 views
0

Так что я пытаюсь создать меню продуктов с ArrayLists. Моя задача состоит в том, чтобы выполнить следующее определение прибыли статического метода, которая вводит элементы ArrayList в MenuItems и возвращает массив удвоений. Каждая запись на выходе представляет собой разницу между ценой и стоимостью соответствующего элемента элементов. Я должен обработать результат каждого расчета, используя деньги, используя статический метод roundMoney.Создание меню элементов через ArrayLists

public class MenuItem 
    { 
     private String myName; 

     private double myPrice, 
        myCost; 

     private int myCode; 

     private boolean myAvailability; 

     public MenuItem(String name, double price, double cost, int code, boolean available) 
     { 
     myName = name; 
     myPrice = price; 
     myCost = cost; 
     myCode = code; 
     myAvailability = available; 
     } 

     public String getName() { return myName; } 
     public double getPrice() { return myPrice; } 
     public double getCost() { return myCost; } 
     public int getCode() { return myCode; } 
     public boolean available() { return myAvailability; } 


     public String menuString() 
     { 
      return getName() + " ($" + getPrice() + ")"; 
     } 


     public static double roundMoney(double amount) 
     { 
     return (int)(100 * amount + 0.5)/100.0; 
     } 

     public static String printAmount(double d) 
     { 
     String s = "" + d; 
     int k = s.indexOf("."); 
     if (k < 0) 
      return s + ".00"; 
     if (k + 1 == s.length()) 
      return s + "00"; 
     if (k + 2 == s.length()) 
      return s + "0"; 
     else 
      return s; 
     } 
    } 
     //*********************************************************************** 
    public static double[] Profits(ArrayList<MenuItem> items) 
    { 
     double[] profits = new double[items.size()]; 
     for (int i = 0; i < profits.length; i++) 
     { 
      profits[i] = roundMoney (items.get(i).getPrice() - items.get(i).getCost()); 
     } 
     return profits; 
    } 
    //*********************************************************************** 
public static void main(String[] args) 
{ 
    ArrayList<MenuItem> items1 = new ArrayList<MenuItem>(); 
    items1.add(new MenuItem("Stir Fry",5.43,0.45,1,true)); 
    items1.add(new MenuItem("Nachos",3.49,0.15,0,false)); 
    items1.add(new MenuItem("Mud Pie",6.50,1.25,2,true)); 
    items1.add(new MenuItem("Jerk Chicken",8.99,3.20,1,false)); 

    double[] t = profits(items1); 

    for (double d : t) 
     System.out.print(printAmount(d) + " "); 
} 

Мой ожидаемый результат: 4,98 3,34 5,25 5,79, но я продолжаю получать сообщение об ошибке: TC1.java:30: Ошибка: не удается найти символу

двойной [] T = прибыль (статей1); Может кто-нибудь, пожалуйста, помогите мне выяснить, что случилось? Спасибо!

ответ

3

Вы определяете свою функцию profits с капиталом "P."

public static double[] Profits(ArrayList<MenuItem> items) 

Изменить строку с ошибкой, чтобы соответствовать имени функции:

double[] t = Profits(items1); 
+1

или (лучше) сделать это (а также любые другие имена методов) низкий случай –

+0

Спасибо. Извините меня, мне нужно захлопнуть голову в дверь. –

+0

Это не всегда лучший выбор для переименования функций. Имена наименований нижних регистров не всегда являются стандартными, и переименование функции может вызвать больше ошибок, чем в коде. Обычно мне лучше сначала обратиться к ошибке, а затем посмотреть рефакторинг. –

-1

Существует проблема sytanx для MenuItem.java Попробуйте запустить программу ниже.


package com.stackoverflow; 

import java.util.ArrayList; 

public class MenuItem 
{ 
    private String myName; 

    private double myPrice, 
       myCost; 

    private int myCode; 

    private boolean myAvailability; 

    public MenuItem(String name, double price, double cost, int code, boolean available) 
    { 
    myName = name; 
    myPrice = price; 
    myCost = cost; 
    myCode = code; 
    myAvailability = available; 
    } 

    public String getName() { return myName; } 
    public double getPrice() { return myPrice; } 
    public double getCost() { return myCost; } 
    public int getCode() { return myCode; } 
    public boolean available() { return myAvailability; } 


    public String menuString() 
    { 
     return getName() + " ($" + getPrice() + ")"; 
    } 


    public static double roundMoney(double amount) 
    { 
    return (int)(100 * amount + 0.5)/100.0; 
    } 

    public static String printAmount(double d) 
    { 
    String s = "" + d; 
    int k = s.indexOf("."); 
    if (k < 0) 
     return s + ".00"; 
    if (k + 1 == s.length()) 
     return s + "00"; 
    if (k + 2 == s.length()) 
     return s + "0"; 
    else 
     return s; 
    } 

    //*********************************************************************** 
public static double[] profits(ArrayList<MenuItem> items) 
{ 
    double[] profits = new double[items.size()]; 
    for (int i = 0; i < profits.length; i++) 
    { 
     profits[i] = roundMoney (items.get(i).getPrice() - items.get(i).getCost()); 
    } 
    return profits; 
} 
//*********************************************************************** 
public static void main(String[] args) 
{ 
ArrayList<MenuItem> items1 = new ArrayList<MenuItem>(); 
items1.add(new MenuItem("Stir Fry",5.43,0.45,1,true)); 
items1.add(new MenuItem("Nachos",3.49,0.15,0,false)); 
items1.add(new MenuItem("Mud Pie",6.50,1.25,2,true)); 
items1.add(new MenuItem("Jerk Chicken",8.99,3.20,1,false)); 

double[] t = profits(items1); 

for (double d : t) 
    System.out.print(printAmount(d) + " "); 
} 
} 
Смежные вопросы