问答详情
源自:1-9 经验总结

感觉写得不太好,请大佬们多多指教

package borrow_books;
import java.util.Scanner;
import java.util.InputMismatchException;

public class Test {
    int command;	
    String inName;	
    int inNum; 	
    Scanner input = new Scanner(System.in);	
    Book[] books = {new Book("数据结构", 1), new Book("高数", 2)};
    		
    public static void main(String[] args) {
        while(true) {
            Test t = new Test();
            t.inputCommand();
            if(t.command == 1) {
                t.inputName();
            }else if(t.command == 2){
                t.inputNumber();
            }
        }
    }
    public void inputCommand() {
        try {
            System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
            command = input.nextInt();
            if((command != 1) && (command != 2)) {
                throw new ErrorCommandException();
            }
        }catch(InputMismatchException ie) {
            ErrorCommandException ee = new ErrorCommandException();
            System.out.println(ee.getMessage());
        }catch(ErrorCommandException ee) {
            System.out.println(ee.getMessage());
        }
    }
    public void inputName() {		
        try {			
            System.out.println("输入图书名称");		
            inName = input.next();	
            for(int i = 0; i < books.length; i++) {			
                if(inName.equals(books[i].name)) {			
             	    books[i].showBookName();					
             	    return;				
             	}			
            }			
            throw new BooknotExistException();		
        }catch(Exception e) {		
            System.out.println(e.getMessage());		
        }	
    }
    public void inputNumber() {
        while(true) {			
            try {			
                System.out.println("输入图书序号");			
                inNum = input.nextInt();				
                for(int i = 0; i < books.length; i++) {					
                    if(inNum == books[i].number) {						
                        books[i].showBookName();						
                        return;					
                    }
                }				
                throw new BooknotExistException();			
            }catch(InputMismatchException ie) {				
                input.nextLine();				
                ErrorCommandException ee = new ErrorCommandException();				
                System.out.println(ee.getMessage());			
            }catch(BooknotExistException be) {				
                System.out.println(be.getMessage());				
                return;			
            }		
        }	
    }
}
package borrow_books;

public class ErrorCommandException extends Exception {	
    public ErrorCommandException() {		
        super("命令输入错误!请根据提示输入数字命令!");	
    }
}
package borrow_books;

public class BooknotExistException extends Exception {	
    public BooknotExistException() {		
        super("图书不存在!");	
    }
}
package borrow_books;

public class Book {	
    String name;	
    int number;		
    
    public Book(String name, int number) {	
        this.name = name;	
        this.number = number;	
    }
    
    public void showBookName() {		
        System.out.println("book:"+name);
    }
}


提问者:慕神6168092 2020-08-21 16:16

个回答

  • 独一无二的彗星
    2020-08-27 08:32:34
    已采纳

    感觉上就只有你编写的代码是方便的,我挺喜欢的。

  • qq_慕丝4346553
    2021-08-15 23:19:32

    你这有一个bug,输入1至3选择时,如果输入字母会报错的

  • weixin_慕莱坞3170709
    2021-03-13 05:46:49

    谢谢分享,学习了~

  • 慕慕3287522
    2020-09-15 10:35:44

    思路清晰,代码简洁,已参考,谢谢楼主。