作业里面的异常怎么写啊,写了半天还是没有实现出来,求各路大神指点一下啊。。万分感激,看了好几遍异常处理的视频,但是这个题的异常处理还是不太会,只把其他的代码实现了,求大神添加一下这个代码的异常处理,以及讲解一番,谢谢~~~

来源:1-9 经验总结

樱桃小栗子

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);
 }
}
}
写回答 关注

2回答

  • L_xiao_全
    2015-07-12 11:28:58

    我的代码是这样滴。

    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 ;

    }


    }


  • 达卿
    2015-06-12 20:55:42

    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入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409770 学习 · 4369 问题

查看课程

相似问题