A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王虎 中级黑马   /  2012-10-13 18:51  /  1179 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王虎 于 2012-10-13 19:25 编辑

下面是老师留的一个练习题目,自己在写代码时有几个地儿就是想不通,写不出来,我想这也是很多人遇到的问题,最后还是由老师把代码写了一遍。。。写完后发现有几个关键地儿原来是那么回事,为什么自己在写时就想不到?什么时候该用什么方法,怎么写能更有效?是个值得思考的问题,真正开发中难道要靠写一手垃圾代码来维持生存?!!差距还很多,不过相信只要自己努力,没有什么不可能,加油!!
/*
        List练习
        
        有一个类  Book类   属性   bookName  bookAuthor  bookPrice

        定义一个List集合,装入五本书.

        从键盘输入一个书名,如果有这本书,将这本书的信息输出。
               
        使用面向对象

*/
import java.util.*;
class Test5
{
        public static void main(String[] args)
        {
                Scanner sc=new Scanner(System.in);

                Book b1=new  Book("红高粱","莫言",14);
                Book b2=new  Book("碧血剑","金庸",84);
                Book b3=new  Book("小李飞刀","古龙",64);
                Book b4=new  Book("楚留香","古龙",32);
                Book b5=new  Book("Thinking in java","tom",100);

                List list=new ArrayList();
                list.add(b1);
                list.add(b2);
                list.add(b3);
                list.add(b4);
                list.add(b5);

                System.out.println("请输入要查找的书名:");

                String name=sc.nextLine();        

                //定义一个要查找的书籍

                Book findBook=new Book(name);

                Book book=BookTools.findBookByName(findBook,list);

                if(book==null){
                        System.out.println("查无此书");
                }else{
                        System.out.println(book);
                }
        }
}

class BookTools
{
        //根据书名去查找书籍
        public static Book findBookByName(Book findBook,List list){
               
                Book book=null;
               
                if(list.contains(findBook)){ //判断是否包含这本书
                        
                        int index=list.indexOf(findBook);//得到第一次出现的索引

                        book=(Book)list.get(index);//根据索引得到这本书
                }
                /*
                        上面使用的contains与indexOf方法在内部都默认使用了 Book类的equals方法.
                */

                return book;

        }

}

//首先定义书类

class Book
{
        private String bookName;
        private String bookAuthor;
        private double bookPrice;

        public Book(String bookName,String bookAuthor,double bookPrice){
                this.bookName=bookName;
                this.bookAuthor=bookAuthor;
                this.bookPrice=bookPrice;
        }

        public Book(String bookName){
               
                this.bookName=bookName;
        }

        public String getBookName(){
               
                return bookName;
        }

        public String toString(){
               
        
                StringBuilder builder=new StringBuilder();

                builder.append("书名:").append(bookName).append(" 作者:").append(bookAuthor).append("  价格:").append(bookPrice);

                return builder.toString();
        }

        /*
                这个equals方法重写时只重写了bookName属性,
                是因为在查找书籍时使用书名查找 .
        */
        public boolean equals(Object obj){
               
               
                if(obj instanceof Book){ //instanceOf 是判断obj指向的对象的类型是否是 Book
                        
                        Book b=(Book)obj;

                        return b.bookName.equals(bookName);
                }

                return false;
        }
}

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马