總感覺哪里不對,誰幫忙看看
?
package com.book.borrow;
import java.util.Scanner;
public class BookLend {
?public static void main(String[] args) {
??// TODO 自動生成的方法存根
??String book[] = {"物理","地理","化學(xué)","音樂","體育"};
??Scanner input = new Scanner(System.in);
??int in1;
??String bookName;
??int bookNum;
??System.out.println("**********歡迎來到圖書借閱系統(tǒng)**********");
??do{
???System.out.println("輸入命令:1-按照名稱查找圖書;2-按照序號查找圖書");
???in1 = input.nextInt();
???if(in1!=1&&in1!=2){
????System.out.println("命令輸入錯誤!請根據(jù)提示輸入數(shù)字命令!");
????continue;
???}
???
???if(in1==1){
????System.out.println("請輸入圖書名稱:");
????bookName = input.next();
????try{
?????for(String x:book) {
??????if(bookName.equals(x)){
???????System.out.println("book:"+bookName);
???????break;
??????}else{
???????throw new BookException(bookName);
???????
??????}
?????}
????}catch(BookException e){
?????System.out.println("您輸入的圖書不存在!");
?????in1=0;
?????continue;
????}
???}
???
???if(in1==2){
????System.out.println("請輸入圖書序號:");
????bookNum = input.nextInt();
????try{
?????if(bookNum>0&&bookNum<=book.length){
??????System.out.println("book:"+book[bookNum-1]);
??????break;
?????}else{
??????throw new BookException(bookNum);
?????}
????}catch(BookException e){
?????System.out.println("您輸入的圖書不存在!");
?????in1=0;
?????continue;
????}
???}
???
??}while(in1!=1&&in1!=2);
??
?}
}
2014-10-18
代碼錯誤:
1.根據(jù)上圖原有代碼,假定我輸入圖書名稱bookName="音樂",
????代碼第一次循環(huán):x="物理",bookName.equals(x)返回false,執(zhí)行了else中throw語句,catch捕獲拋出的BookException異常,程序終止(錯誤)
下圖是就現(xiàn)有代碼修改(非最佳):
推薦:
判斷語句if(in2==2){statement}也有相似的錯誤,在此不再贅述。
另外出于效率來講:
????main方法中do...while語句中判斷條件應(yīng)該直接是while(true)。因?yàn)榧俣ㄎ逸斎敕?或2的數(shù)字判斷語句if(in1!=1&&in1!=2){statement}中(in1!=1&&in1!=2)條件成立,statement執(zhí)行了,continue跳到while(in1!=1&&in1!=2)做多了一次(in1!=1&&in1!=2)判斷。
????個人推薦:
????????do{
????????????...
????????????if(in1==1){
????????????????statement;
????????????????break;
????????????}else if(in2==2){
????????????????statement;
????????????????break;
????????????}else{
????????????????statement;
????????????????continue;
????????????}
?????????}while(true);
2014-10-18
package com.book.borrow;
public class BookException extends Exception{
?public BookException(){
??
?}
?public BookException(String name){
??super(name);
?}
?public BookException(int num){
??System.out.println("圖書不存在");
?}
?
}