樱桃小栗子
2015-06-12 14:01
package com.imooc; import java.util.Scanner; /*模拟借书系统: * 1.定义字符串数组保存图书信息 * 2.提示用户输入,分别按“书名”和“图书序号”查找图书 * 3.根据输入信息进行适当的异常处理 * a.如果输入类型错误,抛出“错误命令异常”,并提示重新输入 * b.如果书名不存在,抛出“图书不存在异常”,并提示重新输入 * c.如果图书序号超过字符串数组范围,抛出“图书不存在异常”,并提示重新输入 * */ public class LibrarySys { public static void main(String []args)throws LibraryException{ Book []allbook={new Book(1001,"Java"),new Book(1002,"C++"), new Book(1003,"linux"),new Book(1004,"C#"), new Book(1005,"PHP"),new Book(1006,"HTML")}; //用一个Book类的数组存储所有图书的图书库allbook,本库共创建了6个图书对象 System.out.println("请输入查询图书的方式:"); System.out.println("1.按照书名查找图书"); System.out.println("2.按照图书编码查找图书"); //两种查询方式 //可能出现的异常:用户输入类型错误,抛出“错误命令”异常 try{ Scanner input=new Scanner(System.in); int userC=input.nextInt();//把用户输入的要查询方式保存在userC中 if(userC==1){ System.out.println("请输入您要查询的图书名称:"); String userBNa=input.next(); //把用户输入的要查询的图书名字保存在userBNa中 Query userQ=new Query();//创建一个用户查询对象userQ userQ.query(allbook, userBNa);//调用按照书名查询的方法 } else if(userC==2){ System.out.println("请输入您要查询的图书编码:"); int userBId=input.nextInt(); //把用户输入的要查询的图书编码保存在userBId中 Query userQ=new Query();//创建一个用户查询对象userQ userQ.query(allbook, userBId);;//调用按照图书编码查询的方法 } }catch(Exception e){ e.printStackTrace(); LibraryException newLE=new LibraryException("错误命令异常!"); throw newLE; } } } package com.imooc; /*自定义一个借书系统的异常*/ public class LibraryException extends Exception { //创建一个无参数的构造器 public LibraryException(){ } //创建一个有参数的构造器 public LibraryException(String message){ super(message);//调用父类Exception的含参数的构造器 } } package com.imooc; /*创建一个图书类 * 该类包括两个属性: * 图书的编码id,图书的书名name. * 此类中可以修改图书的id,name * */ public class Book { public int id;//图书编码 public String name;//图书名称 public int getBookId(){ return id; } public void setBookId(int id){ this.id=id; } public String getBookName(){ return name; } public void setBookName(String name){ this.name=name; } public Book(int id,String name){ this.id=id; this.name=name; } } package com.imooc; /*图书查询类: * 包含两个方法 * query(Book []book,int id)是按照图书id查询图书 * query(Book []book,String name)是按照图书name查询图书 * 查询结果均为:图书编码:图书名称 * */ public class Query{ //两种查询方式的输入均为,Book类的数组,以及图书编码id,图书名称name public void query(Book []book,int id){ //遍历整个图书库book[],用id和每一个图书的id相比较,找到相同id则输出结果 for(int i=0;i<book.length;i++){ if(book[i].getBookId()==id) System.out.println(id+":"+book[i].getBookName()); } } public void query(Book []book,String name){ //遍历整个图书库book[],用name和每一个图书的name相比较,找到相同name则输出结果 for(int i=0;i<book.length;i++){ if(name.equals(book[i].getBookName())) System.out.println(book[i].getBookId()+":"+name); } } }
我的代码是这样滴。
import java.util.Scanner;
/**
* 模拟图书管理系统
* @author Administrator
*
*/
public class BookSystem {
public static void main(String[] args) {
BookSystem bookSystem = new BookSystem();
String[] books = bookSystem.getBooks();
bookSystem.findBook(books);
}
/**
* 图书源
*/
private String[] getBooks()
{
String[] books = {"c语言程序设计","c++面向对象编程","java编程思想","java设计模式","java高级进阶"};
return books;
}
/**
* 查找图书
*/
private void findBook(String[] books)
{
System.out.println("请输入序号查找图书:1.按照书名查找 2.按照序号查找");
Scanner scanner = new Scanner(System.in);
String seq = scanner.next();
boolean isInt = isInteger(seq);
if(isInt)
{
if(Integer.parseInt(seq) == 1)
{
//按照书名查找
findBookByName(books);
}
else if(Integer.parseInt(seq) == 2)
{
//按照序号查找
findBookBySeq(books);
}
else
{
try {
throw new Exception("输入命令错误,请输入相应的序号");
} catch (Exception e) {
//e.printStackTrace();
System.out.println(e.getMessage());
findBook(books);
}
}
}
else
{
System.out.println("输入命令错误,请输入相应的序号");
findBook(books);
}
}
/**
* 根据图书序号查询图书
*/
private void findBookBySeq(String[] books)
{
System.out.println("请输入图书序号:");
Scanner scanner = new Scanner(System.in);
String seq = scanner.next();
boolean isInt = isInteger(seq);
if(isInt)
{
if(Integer.parseInt(seq)<0 || Integer.parseInt(seq)>books.length)
{
try {
throw new Exception("您查找的图书不存在");
} catch (Exception e) {
e.printStackTrace();
findBookBySeq(books);
}
}
else
{
System.out.println("您选择的图书是"+books[Integer.parseInt(seq)]);
}
}
else
{
System.out.println("请输入相应的图书序号:");
findBookBySeq(books);
}
}
/**
* 按书名查找图书
*/
private void findBookByName(String[] books)
{
System.out.println("请输入图书名称:");
Scanner scanner = new Scanner(System.in);
String bookName = scanner.next();
boolean isExist = false;
for(String book : books)
{
if(bookName.equals(book))
{
isExist = true;
}
}
if(isExist)
{
System.out.println("您选择的图书是"+bookName);
}
else
{
try {
throw new Exception("没有找到该图书");
} catch (Exception e) {
//e.printStackTrace();
System.out.println(e.getMessage());
findBookByName(books);
}
}
}
/**
* 判断输入的字符窜是否为整型
*/
private boolean isInteger(String input){
if (input == null || "".equals(input))
return false ;
if ( input.toString().matches("[0-9]+"))
return true ;
else
return false ;
}
}
try{
if(a){
throw new Exception("错误命令异常");
}else if(b){
throw new Exception("图书不存在异常");
}else if(c){
throw new Exception("图书序号不存在异常");
}else{
throw new Exception("其他异常");
}
}catch(exception e){
e.printStackTrace();
}
Java入门第三季
409770 学习 · 4369 问题
相似问题