java里面的scanner怎么关闭_作业。scanner怎么不能关闭

package try_catch;

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 Exception{trycat.InputClassException();

}

//命令错误

public void InputClassException()throws Exception{

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则抛出

}

}catch(NoBookException e){

//InputMismatchException InE=new InputMismatchException();

//InE.initCause(e);

//求教如何在扫描仪我输入非int型时会提示错误命令,例如a

e.printStackTrace();

System.out.println("请重新输入:");

InputClassException();

}catch(Exception e){

backRoll();

}

}

//当输入值为非整数时,调用此方法//不要问我为什么另外新建一个方法,只是因为提示变红字

public void backRoll() throws Exception{

try{

throw new Exception("错误命令,请输入整数");

}catch(Exception e){

e.printStackTrace();

in.next();

System.out.println("请重新输入:");

InputClassException();

}

}

//查找图书

public void findBooks()throws Exception{

System.out.println("请输入您要查询的图书:");

String b=in.next();

boolean flag=false;

try{

for(int i=0;i

if(b.equals(books[i])){//如果查询的书名不为空,输出书本信息

System.out.println("查询成功"+books[i]);

flag=true;

}

}

while(flag==false){//如果查询为空,抛出异常

throw new NoBookException("图书不存在");

}

}catch(NoBookException e){

e.printStackTrace();//捕捉到异常后输出异常位置

NoB.initCause(e);

System.out.println("请重新输入:");

InputClassException();//重新进入系统

}

}

//查找序号

public void findBooksNum()throws Exception{

System.out.println("请输入您要借阅的图书序号:");

int i=in.nextInt();

try{

if(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.关闭扫描仪会报错

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值