大神看一下这个怎么改,开头输入0和1以外的居然无限循环,输入书名都异常,,,

来源:1-9 经验总结

超神crazy

2017-07-09 09:40

package com.Zyc;

import java.util.InputMismatchException;

import java.util.Scanner;

public class book {

public static void main(String[] args) throws InputMismatchException {

String[] books={"数据结构","操作系统","JAVA","算法","LINUX","WEB前端"};

Scanner input=new Scanner(System.in);


String z = null;

while(z==null){

System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");

try {

int a=input.nextInt();

if (a==1) {

System.out.println("输入图书名称:");

String b=input.next();

for(int i=0;i<books.length;i++){

if (b.equals(books[i])) {

z="book:"+books[i];

System.out.println(z);

}

else{

throw new Exception();

}

}

} else if (a==2) {

System.out.println("输入图书序号:");

int c=input.nextInt();

for(int i=0;i<books.length;i++){

if (c==i+1) {

z="books:"+books[i];

System.out.println(z);

}else if (c>=books.length) {

throw new ArrayIndexOutOfBoundsException();

}

}

}

else {

throw new InputMismatchException();

}

} catch (InputMismatchException e) {

System.out.println("命令错误输入错误!请根据提示输入数字命令!");

}catch (ArrayIndexOutOfBoundsException e) {

System.out.println("图书不存在");

}catch (Exception e) {

System.out.println("图书不存在");

}

}

}


}


写回答 关注

5回答

  • 花花_公纸
    2017-08-06 12:57:27

     catch (InputMismatchException e) {

    System.out.println("命令错误输入错误!请根据提示输入数字命令!");

    scanner=new Scanner(System.in);

    }

    添加上述代码即可。就是那个慕粉32308...说的,清楚缓存

  • 慕粉3230801
    2017-07-11 17:45:58

    百度了一下,捕获InputMismatchException,重新进入循环后,上一次输入错误的那个还留在输入缓冲区中,继续执行nextInt()方法时,会使用输入缓冲区中的数据作为默认输入。解决方法:可以在抛出异常后,执行一次sc.next().

  • 宝慕林6553388
    2017-07-10 07:59:03

    昨晚花点时间把try里的方法拿了出来,并加以修改,自定义了一个异常类,总算成功了,用throw抛出的三个异常都被catch捕获到了并加以提示处理,显示异常信息都是独立的三个异常类?

  • 慕粉3461685
    2017-07-09 19:53:44

    输入命令:1-按照名称查找图书;2-按照序号查找图书

    3

    命令错误输入错误!请根据提示输入数字命令!

    输入命令:1-按照名称查找图书;2-按照序号查找图书

    你输入3是不是这样?

    宝慕林655...

    但输入数字以外时系统自动抛出异常,昨晚花点时间修改了一下成功了

    2017-07-10 07:55:09

    共 1 条回复 >

  • 慕粉3461685
    2017-07-09 11:24:29

    并没有无限循环呀,不是抛出错误吗


    超神craz...

    就是无限循环抛出的输入不匹配错误,还有上面的图书名称无论输入什么都抛出错误

    2017-07-09 12:04:24

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题