需要搜索方法和目录的排序方法

时间:2015-11-02 20:01:20

标签: java sorting search

我有一个需要帮助的Java类项目。老实说,我不擅长Java,也不热衷于Java。但是,我需要通过这门课程,所以我需要一些帮助。我正在制作一个充当在线书店的程序。它从主菜单开始:

public static void menu(){
     System.out.println("----MAIN MENU----");
    System.out.println("1. View Catalog");
    System.out.println("2. Search Catalog");
    System.out.println("3. Sort Catalog");
    System.out.println("4. Checkout");
    System.out.println("5. Exit");
    System.out.println("Option: ");
    }

到目前为止,我已经制作了目录:

public static void viewCatalog(){
    System.out.println("Welcome to the ABC Catalog!");
    System.out.println("Product Description   Product Category   Product Price");
    System.out.println("-----------------------------------------------------------");
    System.out.println("Alumni Drink ware   Gifts                  25.00 ");
    System.out.println("Binders             School Supplies         3.00 ");
    System.out.println("Bookbag             School Supplies        20.00 ");
    System.out.println("Fabulous Desserts   Textbooks              25.00 ");
    System.out.println("Folders             School Supplies         1.00 ");
    System.out.println("Gift Cards          Gifts                  25.00 ");
    System.out.println("Highlighters        School Supplies         1.00 ");
    System.out.println("Jacket              Campus Gear            65.00 ");
    System.out.println("JAVA Programming    Textbooks             150.00 ");
    System.out.println("Network Solutions   Textbooks              75.00 ");
    System.out.println("Pencils             School Supplies         1.00 ");
    System.out.println("Pens                School Supplies         2.00 ");
    System.out.println("Shorts              Campus Gear            10.00 ");
    System.out.println("Sweatshirts         Campus Gear            40.00 ");
    System.out.println("T-Shirts            Campus Gear            15.00 ");
    System.out.println("Web Design Ideas    Textbooks              25.00 ");
    System.out.println("---------------------------------------------------------");
}

但我需要一种能够输入一些标准,搜索目录并打印匹配标准的方法。我还需要一种方法,通过提高价格,降低价格,字母顺序,类别类型或产品描述来对目录进行排序。该项目必须至少有一个面向对象的方法。我还需要一种方法将目录中的项目添加到购物车中。

任何代码段都会非常受欢迎。我对任何关于作弊的讲座都不感兴趣,所以请不要发布任何类似的内容。我希望有人会对Web Dev学生表示同情,他们只需要通过本课程,就可以继续学习我更热衷的课程。

2 个答案:

答案 0 :(得分:0)

好的,我会尝试尽可能多地回答:

您可以通过简单地循环遍历数组进行搜索,直到找到与您要查找的条目匹配的条目。

有一些使用compareTo的原生排序方法,但是如果你需要很多不同的排序方法,最好自己编写。

我会说,如果你只需要按一个标准排序,看看你是否可以使用标准库中的函数。

希望这有帮助。

答案 1 :(得分:0)

您需要一个数据结构来保存您的数据。列表适用于您的情况。从数据创建Item对象并将它们放在列表中。代码可能有错误,因为我没有IDE来测试它。

class Item
{
   public Item(String d, String c, double p)
   {
      description = d;
      category = c;
      price = p;
   }
   String description;
   String category;
   double price;
}

您可以将字段设为私有字段并编写setter和getter字段。现在为目录中的每一行创建一个Item对象,并将它们添加到列表中。

List<Item> list = new ArrayList<>();
Item item = new Item("Binders","School Supplies","3.00");
list.add(item); 

使用自定义比较器对项目进行排序。这个使用描述字段对列表进行排序。如果要按降序排序,只需运行常规排序并反转结果列表即可。

void sortByDescription(List<Item> list)
{
     Collections.sort(list, new Comparator<Item>(){
          public int compare(final Item o1, final Item o2){
              return o1.description.compareTo(o2.description);
          }
     });
}

void sortByDescriptionBackwards(List<Item> list)
{
   sortByDescription(list);
   Collections.reverse(list);
}

Search方法接受String参数,并在item对象的所有3个字段中查找匹配项。如果找到匹配项,则将其添加到结果列表中并返回该列表。原始列表未更改。

List<Item> search(final String searchFor)
{
    List<Item> searchResults = new ArrayList<>();
    for(int i = 0; i<list.size(); i++)
    {
        Item item = list.get(i);
        if(item.description.contains(searchFor) ||
             item.category.contains(searchFor) ||
                String.valueOf(item.prize).contains(searchFor) )
       {searchResults.add(item);}
    }
    return searchResults;
}