传入不同参数来进行查找的Search方法?(语言-java)

问题遇到的现象和发生背景
         以ArrayList集合为储存的一个Book型,有书籍名和书籍价格的属性。在Java方法中,
         如何通过一个或两个等简单的方法,在主界面通过Switch选择查找功能后,能够通过
         输入不同参数,查找并显示出所需要的书籍信息?
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
         1.我定义了两个方法,search(String Name)和search(double lowprice,double highprice),不过
          像这样的话在主界面Switch结构里,无法合适的输入参数达到我想要的目的。
我想要达到的结果

想通过任意参数过滤信息,那就需要你遍历所有的 book 属性,一一判空。你在参数列表就不要写 具体的 name,lowprice,这些,而直接写 Book 对象,通过对他非空的属性过滤来达到目的

在选择查找功能后,再增加个选择是根据书名查找还是根据价格区间查找即可。代码参考如下:

public class PojoTest {
    public static List<Book> booksList = new ArrayList<>();
    public static Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
        initData();
        while (true) {
            System.out.println("请输入操作选项:");
            System.out.println("查找:1");
            int option = scanner.nextInt();
            switch (option) {
                case 1: {
                    searchData();
                }
                    break;
                default:
                    System.out.println("请输入正确的选项~~");
            }
        }
    }
    // 初始化数据
    public static void initData() {
        Book b1 = new Book("Java", 99);
        Book b2 = new Book("Python", 59);
        Book b3 = new Book("C语言", 19);
        booksList.add(b1);
        booksList.add(b2);
        booksList.add(b3);
    }
    // 搜索
    public static void searchData() {
        while (true) {
            System.out.println("请输入操作选项:");
            System.out.println("通过书名查找:1");
            System.out.println("通过价格查找:2");
            int o = scanner.nextInt();
            switch (o) {
                case 1: {
                    System.out.println("请输入书名:");
                    scanner.nextLine();
                    String name = scanner.nextLine();
                    System.out.println(name);
                    List<Book> books = search(name);
                    for (Book book : books) {
                        System.out.println(book);
                    }
                    if (books.size() == 0) {
                        System.out.println("未搜索到相关书籍~~");
                    }
                    return;
                }
                case 2: {
                    System.out.println("请输入最低价~~");
                    double lowprice = scanner.nextDouble();
                    System.out.println(lowprice);
                    System.out.println("请输入最低价~~");
                    double highprice = scanner.nextDouble();
                    System.out.println(highprice);
                    List<Book> books = search(lowprice, highprice);
                    for (Book book : books) {
                        System.out.println(book);
                    }
                    if (books.size() == 0) {
                        System.out.println("未搜索到相关书籍~~");
                    }
                    return;
                }
                default:
                    System.out.println("请输入正确的选项~~");
            }
        }
    }
    // 通过书名搜索
    public static List<Book> search(String name) {
        List<Book> list = new ArrayList<>();
        for (Book book : booksList) {
            if (book.getName().contains(name)) {
                list.add(book);
            }
        }
        return list;
    }
    // 通过价格区间搜索
    public static List<Book> search(double lowprice, double highprice) {
        List<Book> list = new ArrayList<>();
        for (Book book : booksList) {
            if (book.getPrice() >= lowprice && book.getPrice() <= highprice) {
                list.add(book);
            }
        }
        return list;
    }
}