以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;
}
}