Java入門第三季 1-9 《模擬借書系統》
package com.imooc.exception_demo1; import java.util.Scanner; /**進入系統,查詢圖書主類(進入系統如果連續輸錯3次,則會提示是否重新進入系統, *若提示重新進入系統的命令還是連續輸錯三次,則強制退出程式,以上是自己想法在練習基礎上增加了 *一些想法) */ public class PracticeOwn1_9 { String bookname[] = { "JAVA", "語文", "數學", "英語", "建築設計" }; private static int count=0;//按照型別查詢輸入錯誤的統計數 private static int totle=0;//連續輸錯3次,統計重新進入系統輸入錯誤數 public static void main(String[] args) { mainOperate(); } private static void mainOperate(){int a = 0;//給a一個初始化值 Scanner input = new Scanner(System.in); operate(a, input);//呼叫operate方法,把a傳參 } private static void operate(int a, Scanner input) { FindName dy = new FindName(); FindNo dx = new FindNo(); System.out.println("輸入命令:1-按照名稱查詢圖書;2-按照序號查詢圖書"); a=getA(a, input);//呼叫getA方法獲取鍵盤輸入的值賦值給a,用於判斷下面if語句 // System.out.println("a:" + a);//列印當前a的值 if (a == 1) {//按照名稱查詢圖書 dy.findName(dy, a, input); } else if (a == 2) {//按照序號查詢圖書 dx.findNO(dx, a, input); }else {setCount(getCount() + 1);//因為count定義的私有變數,訪問需要get/set訪問 if(getCount()>=3){ System.out.println("對不起,您已經連續輸錯3次及以上!!!0-繼續進入系統查詢,1-退出程式"); count=0;input1(); }else{ System.out.println("你輸入的命令錯誤,請根據提示輸入數字命令!!");//判斷是否是非1和2的其他數字 ,若其他數字,輸出該語句 } } operate(a, input); } public static void input1(){//判斷是否繼續進入系統查詢,若輸入命令錯誤,丟擲錯誤異常 Scanner input = new Scanner(System.in); try{ int a=input.nextInt(); if(a == 0){ operate(a, input); }else if (a == 1) { System.out.println("退出程式,歡迎下次光臨!"); System.exit(0); }else{ System.out.println("你輸入的命令錯誤,暫時無法進入系統查詢,請根據提示輸入正確的命令!!");//判斷輸 入的是否是非1和2的其他數字,若其他數字,輸出該語句 setTotle(getTotle() + 1); if(getTotle()>=3){ System.out.println("對不起,您已經連續輸錯3次!!!已退出程式,如有需要請重新進入系統。"); System.exit(0);} input1();} }catch(Exception e){ setTotle(getTotle() + 1); if(getTotle()>=3){ System.out.println("對不起,您已經連續輸錯3次及以上!!!已退出程式,如有需要請重新進入系統。"); System.exit(0); }else{ System.out.println("111你輸入的命令錯誤,暫時無法進入系統查詢,請根據提示輸入數字命令!!");//為了 區別數字列印的和非數字列印的語句,文案前加了111} input1(); } } private static int getA(int a, Scanner input){ try {a = input.nextInt(); } catch (Exception e) {//篩選類別輸入是否異常,判斷是否是非數字丟擲的異常setCount(getCount() + 1); if(getCount()>=3){ System.out.println("對不起,您已經連續輸錯3次及以上!!!0-繼續進入系統查詢,1-退出程式"); count=0;input1(); }else{ System.out.println("輸入異常了!" + e.getMessage()); System.out.println("111你輸入的命令錯誤,請根據提示輸入數字命令!!");//為了區別數字列印的和非數字 列印的語句,文案前加了111 mainOperate(); } } return a; } public static int getCount() { return count; } public static void setCount(int count) { PracticeOwn1_9.count = count; } public static int getTotle() { return totle; } public static void setTotle(int totle) { PracticeOwn1_9.totle = totle; } } // 根據書名查詢,新建一個類繼承於父類(正常的按照影片給的模樣,未自己新增其他判斷) package com.imooc.exception_demo1; import java.util.InputMismatchException; import java.util.Scanner; public class FindName extends PracticeOwn1_9 { @SuppressWarnings("resource") public boolean findName(int order) { // TODO Auto-generated method stub boolean isExist = false; try { System.out.println("請輸入圖書名稱:"); Scanner input = new Scanner(System.in); String b = input.next(); for (int i = 0; i < bookname.length; i++) { // System.out.println("b:" + b); if (bookname[i].equals(b)) { isExist = true; System.out.println("book:" + bookname[i]); break; } } if (!isExist) { throw new Exception("圖書名稱不存在!!1-繼續查詢,2-退出程式");//自定義異常丟擲問題 } } catch (Exception e) { System.out.println(e); } //System.out.println("isExist:" + isExist);//列印isExist,判斷返回狀態 return isExist; } public void findName(FindName dy, int a, Scanner input) { boolean isTrue = findName(a); //System.out.println("isTrue:" + isTrue);//列印isTrue的狀態,定位當前返回的值 if (isTrue) { findName(dy, a, input); } else { input(); findName(dy, a, input); } } public void input(){ Scanner input = new Scanner(System.in); try{ int a=input.nextInt(); if(a == 1){ FindName dy = new FindName(); findName(dy, a, input); }else if( a == 2){ System.out.println("退出程式,歡迎下次光臨!"); System.exit(0); }else{//判斷數字是否符合 System.out.println("輸入的命令有誤,請重新輸入:1-繼續查詢,2-退出程式"); } input(); }catch(InputMismatchException e){//輸入異常判斷,如:英文字母、特殊字元 System.out.println("111輸入的命令有誤,請重新輸入:1-繼續查詢,2-退出程式"); input(); } } } /** *按照序號查詢圖書,新建類繼承於父類(該類設定了查詢次數,錯誤查詢和正確查詢超過3次,即提示是否繼 *續查詢,以上是新增了自己的想法) */ public class FindNo extends PracticeOwn1_9 { int count1=0;//正確查詢次數統計 int sum1=0;//錯誤查詢次數統計 int totle=0;//繼續查詢次數統計 @SuppressWarnings("resource") public boolean findNO(int order) { // TODO Auto-generated method stubboolean isExist = false; System.out.println("請輸入圖書序號:"); try{Scanner input=new Scanner(System.in); int c=input.nextInt() - 1; System.out.println("book:"+bookname[c]); count1++;//若走正常查詢,統計數+1 sum1=0;//只要正常查詢一次,即錯誤統計數清零 isExist=true; }catch(ArrayIndexOutOfBoundsException e){//判斷下標是否異常 //e.printStackTrace(); System.out.println("圖書id不存在,請重新輸入!"); count1=0;//只要錯誤查詢一次,即正確查詢統計數清零 sum1++;//若走錯誤查詢,統計數+1(不管是哪種異常統計數都+1) }catch(InputMismatchException e){//判斷輸入是否為正整數 System.out.println("請輸入正整數!!圖書不存在,請重新輸入!"); count1=0;//只要錯誤查詢一次,即正確查詢統計數清零 sum1++;//若走錯誤查詢,統計數+1(不管是哪種異常統計數都+1) } //System.out.println("isExist:" + isExist);//列印返回狀態 return isExist;//返回查詢狀態,false:沒找到,true:已查詢到 } public void findNO(FindNo dx, int a, Scanner input) { boolean isTrue = findNO(a);//判斷是否查詢到圖書,false否,true是// System.out.println("isTrue:" + isTrue);//列印返回狀態 if (isTrue) {//正常查詢 if(count1>=3){ System.out.println("查詢已經超過3次了,你還繼續查詢嗎?1-是,2-否"); count1=0; totle=0; input(); } findNO(dx, a, input); } else { if(sum1>=3){ System.out.println("您已連續錯了三次了,是否繼續查詢?1-是,2-否"); sum1=0; totle=0; input(); } findNO(dx, a, input); } input(); } public void input(){ Scanner input = new Scanner(System.in); try{int a=input.nextInt(); if(a == 1){ FindNo dx = new FindNo(); findNO(dx, a, input); }else if( a == 2){ System.out.println("退出程式,歡迎下次光臨!"); System.exit(0); } else{ totle++; if(totle>=3){ System.out.println("1111您已連續錯了三次了,是否繼續查詢?1-是,2-否"); input(); }else{ System.out.println("輸入的命令有誤,請重新輸入:1-繼續查詢,2-退出程式"); } input(); } input(); }catch(InputMismatchException e){ totle++; if(totle>=3){ System.out.println("1111您已連續錯了三次了,是否繼續查詢?1-是,2-否"); input(); }else{ System.out.println("輸入的命令有誤,請重新輸入:1-繼續查詢,2-退出程式"); }input(); } } }
小測試一枚,學習JAVA中???,歡迎指導,謝謝
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2331/viewspace-2823248/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JAVA入門第三季1-9 借書系統手記Java
- Java入門自定義異常&模擬借書系統Java
- JAVA入門第三季(第一章練習)模擬借書系統Java
- java第三季異常作業:借書系統Java
- Java入門第三季1.9圖書查詢Java
- java大作業總結——圖書借閱管理系統Java
- 【Java】酒店管理系統的模擬Java
- Django入門案例:圖書管理系統Django
- Java作業系統課設之模擬程式管理系統Java作業系統
- 【Java】——模擬登入實現Java
- Gpssworld模擬(二):並排排隊系統模擬
- 又做了一個“圖書借閱系統”小程式
- java入門第三季6-5練習Java
- 極簡 Node.js 入門 - 1.2 模組系統Node.js
- 利用WReal加速系統模擬
- ABAQUS模擬軟體新手入門培訓
- Abaqus 模擬軟體新手入門培訓
- Modelsim模擬新手入門最詳細教程
- Java入門第三季撲克牌小遊戲Java遊戲
- OPNET入門1-第一個模擬例子
- web模擬終端部落格系統Web
- Web 模擬終端部落格系統Web
- xcode模擬器截圖。mac系統。XCodeMac
- JAVA入門第三季——最後練習題撲克牌Java
- java:模擬棧操作Java
- C++快速入門--12--抽象類和介面模擬C++抽象
- 《MySQL 入門教程》第 12 篇 分組統計MySql
- OFDM通訊系統的MATLAB模擬(2)Matlab
- OFDM通訊系統的MATLAB模擬(1)Matlab
- 光學數字孿生系統模擬
- C語言實戰!!!:商城系統模擬C語言
- Linux系統快速入門方法Linux
- Java 9 的模組(Module)系統Java
- Vue入門到關門之指令系統Vue
- 常用的虛擬機器軟體有哪些?linux作業系統入門虛擬機Linux作業系統
- 給入門Java的小白推薦一本書Java
- Java入門第三季7-1簡易撲克牌作業Java
- 用java語言,模擬實現作業系統的銀行家演算法。Java作業系統演算法