慕课学习手记!(完成查找书籍小程序~)

首先贴一下程序要完成的功能的要求!

QQ截图20161031223300QQ截图20161031223242

 

接下来贴一下主程序!

初学者写的代码。。。用JAVA写的 

package exc;
//输入错误异常
public class ErrorException extends Exception {
    public ErrorException(){
        System.out.println("命令输入错误!请根据提示输入数字命令!");
    }; 
}


package exc;
//书籍不存在异常
public class NoException extends Exception {
    //两个含参构造方法,第一个是‘图书名称不存在’异常
    public NoException(String name){
        System.out.println("图书"+name+"不存在");
    }
    //第二个是‘图书序号不存在’异常
    public NoException(int num){
        System.out.println("图书序号为"+num+"的书不存在");
    }
}

package exc;
//建造的书籍类
public class Book {
     String name;
     int num;
     public Book(){};
     //含参的构造方法 用来建造带有名字和序号的书籍类
    public Book(String name,int num){
        this.name=name;
        this.num=num;
    }        
}



package exc;


import java.util.Scanner;

public class Test {
    static Test qwer=new Test();
    Scanner reader=new Scanner(System.in);
    //构建书籍类数组
    Book[] books={new Book("高数", 1),
            new Book("语文", 2),
            new Book("英语", 3),
            new Book("物理", 4),
            new Book("化学", 5),
            new Book("生物", 6)
            };
    
    public static void main(String[] args) throws NoException  {
        // TODO Auto-generated method stub
        qwer.welcome();//提示欢迎
        qwer.xunhuan();    //调用循环函数,当出现错误时一直运行程序,直到找到正确的书籍
    }
    
    
    //程序运行的主体
        public void inputWelcome(int a) throws ErrorException, NoException{
            
            if (a==1) {
                System.out.println("输入图书名称"    );//采用名称查找方法
                String b=reader.next();
                qwer.corrcetName(b);//用名称确认方法查找是否存在对应书籍
                
            }else if (a==2) {
                System.out.println("输入图书序号");//采用序号查找方法
                int c=reader.nextInt();
                qwer.corrcetNum(c);//用序号确认方法查找是否存在对应书籍
                
            }else {
                throw new ErrorException();//抛出输入错误异常
            }
        }
        
//主干程序,完成框架
        public void retime() throws NoException{
            int a=reader.nextInt();
            try {
                qwer.inputWelcome(a);
            } catch (ErrorException e) {
                // TODO Auto-generated catch block
                qwer.welcome();
                qwer.retime();
            }
        }    
        
        
    //循环函数,当出现异常时,捕获输入错误异常,并继续执行    
    public void xunhuan(){
        try {
            qwer.retime();
        } catch (NoException e) {//捕获到输入错误异常时,继续执行程序,重新查找书籍
            // TODO Auto-generated catch block
            System.out.println("输入有误,请重新选择");
            qwer.welcome();
            qwer.xunhuan();
        }
    }
    
    
//查找输入序号时的确认函数
    public void corrcetNum(int b) throws NoException{
        int i=0;
        //如果输入的序号大于数组长度或者为复数,则抛出输入错误异常
        if (b>books.length||b<0) {
            throw new NoException(b);
        }
        //数组一个个遍历,确认是否存在此序号书籍
        for (; i < books.length; i++) {
             if(books[i].num==b){
                    System.out.println("book:"+books[i].name);
                    System.out.println("恭喜您找到自己需要的书籍了!");
                    break;
                };
        }
        }
    
    
    
    
//查找输入名称时的确认函数
    public void corrcetName(String b) throws NoException{
        int i = 0;
        //数组一个个遍历,确认是否存在此名称书籍
        for (; i < books.length;i++) {
              if(books[i].name.equals(b)){
                    System.out.println("book:"+books[i].name);
                    System.out.println("恭喜您找到自己需要的书籍了!");
                    break;
                };    
        }
        //当遍历完整个程序,还是没有找到输入名称书籍,则抛出书籍不存在异常
        if (i==books.length) {
            throw new NoException(b);
        }    
        }
    
    
    
    


    //欢迎界面
    public void welcome(){
        System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找名称");
    }
}

 

希望大家看到程序的可以去跑一跑!一起参考交流一下~!

posted @ 2016-11-06 18:49  不思蜀  阅读(683)  评论(0编辑  收藏  举报