为了账号安全,请及时绑定邮箱和手机立即绑定

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

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 回答

我的代码是这样滴。

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 ;

}


}


0 回复 有任何疑惑可以回复我~

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();

}

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号