【问题标题】:Need a search method and a sort method for a catalog需要目录的搜索方法和排序方法
【发布时间】:2015-11-02 20:01:20
【问题描述】:

我有一个需要帮助的 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("---------------------------------------------------------");
}

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

任何代码 sn-ps 将不胜感激。我对任何关于作弊的讲座不感兴趣,所以请不要发布类似的东西。我希望有人会同情一个只需要通过这门课程才能继续学习我更感兴趣的课程的 Web 开发学生。

【问题讨论】:

  • 这些数据最初将如何存储?

标签: java sorting search


【解决方案1】:

您需要一个数据结构来保存您的数据。清单适合您的情况。从数据中创建 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 方法接受一个字符串参数并在项目对象的所有 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;
}

【讨论】:

  • 那么对于列表项,你会把它们放在视图目录方法中吗?
【解决方案2】:

好的,我会尽量回答:

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

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

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

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2013-06-07
    • 2020-06-20
    • 2016-06-02
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多