1. 程式人生 > >java學習之借書系統

java學習之借書系統

fin main方法 cas int() import pan 需要 使用 system.in

實現的圖書借閱系統要處理用戶輸入的非法參數,並引導用戶正確使用

測試結果:

技術分享圖片技術分享圖片

主要目的就是練習異常處理中的Exception類的使用

使用的相關語法

1 try{
2 //可能產生異常的代碼塊
3 }catch(Exception e){
4 //處理異常的代碼塊
5 }finally{//可以根據需要選擇
6 //最終執行的代碼塊
7 }

實現過程:

創建BorrowBook類

import java.util.InputMismatchException;
import java.util.Scanner;
public class BorrowBook {
    
    Scanner scn 
= new Scanner(System.in); }

定義三種異常類:輸入的編號沒有對應圖書的異常、輸入的書名沒有對應的圖書的異常、其他正常異常

private static class commanException extends Exception{
    private commanException() {}
}
private static class bookNumException extends Exception{
    private bookNumException() {}
}
private static class bookNameException extends
Exception{ private bookNameException() {} }

創建拋出異常方法,並拋出三種異常

private void commanExc() throws commanException{
    throw new commanException();
}
private void bookNumExc() throws bookNumException{
    throw new bookNumException();
}
private void bookNameExc() throws bookNameException{
    throw
new bookNameException(); }

創建用於存儲圖書的Box的方法(以兩類書為例)

private static String[] bookBox() {
    String[] bookBox = new String[] {"高數","線性代數"};
    return bookBox;
}

創建借書入口方法

private static void borrowBook() throws Exception{
    System.out.println("輸入命令:1-根據名稱查找圖書;2-根據序號查找圖書");
    try {
        int inputNum = new BorrowBook().scn.nextInt();
        try {
            if(inputNum == 0) {
                borrowBkByName(bookBox());
            }else if(inputNum == 1){
                borrowBkByNum(bookBox());
            }else {
                new BorrowBook().commanExc();
            }
        }catch(Exception e){
            System.out.println("命令輸入錯誤,請根據提示輸入數字命令!");
            borrowBook();
        }    
    }catch(InputMismatchException eInput) {
        System.out.println("命令輸入錯誤,請根據提示輸入數字命令!");
        borrowBook();
    }
}

創建依據書名借書的方法

private static void borrowBkByName(String[] books) throws Exception{
    System.out.println("輸入圖書名稱:");
    String bookName = new BorrowBook().scn.next();
    try {
        switch(bookName) {
        case "高數":
            System.out.println("book:" + bookName);
            break;
        case "線性代數":
            System.out.println("book:" + bookName);
            break;
        default:
            new BorrowBook().bookNameExc();
        }
    }catch(Exception e) {
        System.out.println("圖書不存在!");
        borrowBkByName(books);
    }        
}

創建依據圖書序號借書的方法

private static void borrowBkByNum(String[] books) throws Exception{
    System.out.println("輸入圖書序號:");
    try {
        int bookNum = new BorrowBook().scn.nextInt();
        try {
            switch(bookNum) {
            case 1:
                System.out.println("book:" + books[bookNum]);
                break;
            case 2:
                System.out.println("book:" + books[bookNum]);
                break;
            default:
                new BorrowBook().bookNumExc();
            }
        }catch(Exception e) {
            System.out.println("圖書不存在!");
            borrowBkByNum(books);
        }    
    }catch(InputMismatchException e) {
        System.out.println("命令輸入錯誤,請根據提示輸入數字命令!");
        borrowBkByNum(books);        
    }
}

用於初始化的main方法

public static void main(String[] args) throws Exception{
    borrowBook();
    new BorrowBook().scn.close();
}

java學習之借書系統