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

作业问题,请教大神帮忙

package try_catch;
import java.util.InputMismatchException;
import java.util.Scanner;
public class TryCatchPractice2 {		
    //在类开始声明,则其他方法都能调用	
    Scanner in=new Scanner(System.in);
    NoBookException NoB=new NoBookException();	
    String[] books={"语文","数学","英语"};	
    static TryCatchPractice2 trycat=new TryCatchPractice2();			
    
    //主函数	
    public static void main(String[]args) throws NoBookException{		
        trycat.InputClassException();	
    }	
    //命令错误
    public void InputClassException()throws NoBookException{			
        try{		
        System.out.println("欢迎光临本图书管理系统");		
       	System.out.println("1.书名查询。2.序号查询");		
       	int a=in.nextInt();		
       	switch(a){		
       	    case 1:	//查找图书		
       	  	trycat.findBooks();			
       	    break;		
       	    case 2://查找序号			
       	    	trycat.findBooksNum();		
       	    break;		
       	    default:		
       	    	throw new NoBookException("错误命令,请输入整数1或2");//如果输入数字非1,2则抛出		
       	    break;	
         }catch(NoBookException e){
 //		InputMismatchException InE=new InputMismatchException();
 //			InE.initCause(e);
 //			System.out.println("错误命令,请输入整数1或2");
 //			求教如何在扫描仪我输入非int型时会提示错误命令,例如a
 			e.printStackTrace();
 			System.out.println("请重新输入:");			
 			InputClassException();		
 	}			
 }			
 //查找图书	
 public void findBooks()throws NoBookException{		
     System.out.println("请输入您要查询的图书:");		
     String b=in.next();		
     try{			
         for(int i=0;i<books.length;i++){				
             if(books[i].equals(b)){//如果查询的书名不为空,输出书本信息				
             	System.out.println("查询成功");			
             }else{//如果查询为空,抛出异常				
             	throw new NoBookException("图书不存在");			
           	 }		
         }		
     }catch(NoBookException e){	
     		e.printStackTrace();//捕捉到异常后输出异常位置		
     		NoB.initCause(e);			
     		System.out.println("请重新输入:");	
     		InputClassException();//重新进入系统		
     }	
 }			
 //查找序号
 public void findBooksNum()throws NoBookException{	
 	System.out.println("请输入您要借阅的图书序号:");
 	int i=in.nextInt();		
 	try{			
 	    if(i<books.length&&i>=0){//如果查询的序号不越界,输出书本信息		
 	   	System.out.println("查询成功");				
 	   	System.out.println("您查询的是"+books[i]);			
 	    }else{//越界则抛出数组越界异常			
 	    	throw new NoBookException("序号错误");			
 	    }		
 	}catch(NoBookException e){		
 		e.printStackTrace();//捕捉到异常后输出异常位置		
 		NoB.initCause(e);			
 		System.out.println("请重新输入:");			
 		InputClassException();//重新进入系统		
 	}			
 }	
 //in.close();//为什么这里打in.close.关闭扫描仪会报错
}


提问者:每天学一点明天会更好 2019-01-06 13:50

个回答

  • qq_篁_0
    2019-06-04 20:29:45

    InputClassException()方法少了个结束的括号