搜索具有特定名称的项目列表

时间:2014-03-06 02:13:07

标签: java

我正在做一个面向对象的程序,它包含一个类目录和一个类产品。 Catalog有一种方法,用于搜索具有从文件中读取的特定名称的产品列表。一切正常,但getProducts无效。

这是带有getProducts(String name)

的Catalog类
import java.io.File;
import java.io.FileNotFoundException;
import java.util.*

public class Catalog{



    private static int MAX_ITEMS = 10;

    private Products[] list;

    private int nextItem;


    /**
     * Default constructor 
     */
    public Catalog(){
        list = new Products[MAX_ITEMS];
        nextItem = 0;
    }

    /**
     * Reads items from an input file.
     */
    public void loadList(String fileName)
            throws FileNotFoundException { 
        if ( (fileName != null) && (!fileName.equals("")) ) { 
            Scanner input = new Scanner(new File(fileName)); 
            String newLine = null; 
            String name = null;
            int quantity = 0;
            double price = 0.0;


            while (input.hasNextLine() && nextItem < MAX_ITEMS) { 
                if (input.hasNext()) { 
                    name = input.next(); 
                } else { 
                    System.err.println("ERROR Not a String"); 
                    System.exit(2); 
                }
                if (input.hasNextInt()) { 
                    quantity = input.nextInt(); 
                } else { 
                    System.err.println("ERROR Not an integer"); 
                    System.exit(2); 
                } 
                if (input.hasNextDouble()) { 
                    price = input.nextDouble(); 
                } else { 
                    System.err.println("ERROR Not a double"); 
                    System.exit(2); 
                }
                list[nextItem] = new Products(name, quantity, price); 
                newLine = input.nextLine(); 
                nextItem += 1; 
            } 
        } 
        return; 
    } 

    /**
     * Calculate the total cost of products.
     */
    public double getTotalPrice(){
        double total = 0.0;
        for(int i=0; i < nextItem; i++){
            Products products = list[i];
            total+=products.getTotalPrice();
        }
        return total;
    }

    /**
     * Search Catalog items with a product name and returns it to caller
     */
    public Products getProducts(String name){
        **//search a list for string equality using the name of the product and returns it to the caller**
        for(int i=0; i<nextItem; i++){
            Products item = list[i];
            if(item.equals(name)){
                return item;  //What is suppose to be returned or how to  
                //return it to the caller
            }

            public static void main(String[] args) 
                    throws FileNotFoundException { 
                Catalog catalog= new Catalog(); 
                catalog.loadList(args[0]);
                System.out.println();
                System.out.format("Total Price = %9.2f\n", catalog.getTotalPrice());
            }
        }

这是产品类

public class Products {

    private String name;
    private int quantity;
    private double price;

    /**
     * Constructor.
     */
    public Products(String name, int quantity, double price){
        this.name = name;
        this.quantity = quantity;
        this.price = price;
    }
    /**
     * Gets name of the product.
     */
    public String getName(){
        return this.name;
    }
    /**
     * Gets the quantity of products.
     */
    public int getQuantity(){
        return this.quantity;
    }
    /**
     * Gets the cost per product.
     */
    public double getPrice(){
        return price;
    }
    /**
     * set quantity of the products.
     */
    public void setQuantity(int quantity){
        this.quantity=quantity;
    }
    /**
     * Calculate the total price.
     */
    public double getTotalPrice(){
        return quantity * price;
    }
    /**
     * Returns a spaced-separated list of the attributes.
     */
    public String toString(){
        toStr="";
        toStr= toStr + getName();
        return toStr;
    }

这是文件

    Football 2 15.50
    Football-Jersey 2 30.95
    ChapStick 1 3.87
    Book 4 10.00
    Book-Journal 1 5.00

2 个答案:

答案 0 :(得分:0)

项目是一个对象,因此您可以尝试使用这样的点来获取名称

 if(item.getName().equals(name))

 if(item.getName.equalsIgnoreCase(name))

答案 1 :(得分:0)

你有:

public Products getProducts(String name){
    ...
    for(int i=0; i<nextItem; i++){
        ...
        Products item = list[i];
        if(item.equals(name)) {
            ...

请注意,itemProducts,但您要将其与Stringname进行比较。您可能希望比较产品的名称,例如:

        if(item.getName().equals(name)) {

如果名称不区分大小写,您也可以使用String.equalsIgnoreCase(),如果前导/尾随空格也是个问题,可能首先使用trim()

相关问题