ybdt1201 2016-07-23 14:15 采纳率: 100%
浏览 1217
已采纳

java的一些简单问题,求教下大家,谢谢啦

下面一段代码红有四处不太明白,求教大虾指点下,
import java.util.InputMismatchException;这个有什么用的?
catch (InputMismatchException e){ 中的InputMismatchException什么意思?
catch (ArrayIndexOutOfBoundsException e){ 中的ArrayIndexOutOfBoundsException什么意思?
Scanner sc = new Scanner(System.in); 这个Scanner是什么类?

下面是详细代码

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

public class LibrarySystem {

    // 图书馆现有书目
    private String[] books = {"高数","大物","英语"};

    // 按序号查找图书
    public void findABook( int num ){
        try{
            System.out.println("book:" + books[num]);
        }catch (InputMismatchException e){
            System.out.println("9999命令输入错误!请根据提示输入数字命令!");
        }
        catch (ArrayIndexOutOfBoundsException e){
            System.out.println("图书不存在!");
        }
    }

    // 按书名查找图书
    public boolean findABook( String bookName ){
        for( String book:books){
            if(book.equalsIgnoreCase(bookName)){
                System.out.println("book:" + book);
                return true;
            }
        }
        System.out.println("图书不存在!");
        return false;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        LibrarySystem ls = new LibrarySystem();

        Scanner sc = new Scanner(System.in);
       while(sc != null){ //这里用while而不用if,是因为while可以多次调用,而if则只调用一次
            System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书。");

            try{
                int commandNum = sc.nextInt();
                sc.nextLine();//是Scanner中的一个方法,表示获取键盘输入的一整行,包括空格
                switch (commandNum) {
                    case 1:
                        System.out.println("输入图书名称:");
                        String bookName = sc.nextLine();
                        ls.findABook(bookName);
                        break;
                    case 2:
                        System.out.println("输入图书序号:");
                        int bookNum = sc.nextInt();
                        sc.nextLine();
                        ls.findABook(bookNum);
                        break;
                    default:
                        //输入整数范围有误,抛出异常
                        throw new Exception("088888命令输入错误!请根据提示输入数字命令!");
                }
            }catch(InputMismatchException e){
                System.out.println("33333333命令输入错误!请根据提示输入数字命令!");
                sc.nextLine();
            }catch (Exception e){
                //e.printStackTrace();
                System.out.println("2222222命令输入错误!请根据提示输入数字命令!");
            }
        }
    }
}
  • 写回答

4条回答 默认 最新

  • JPF1024 2016-07-23 14:45
    关注

    import java.util.InputMismatchException;这个有什么用的?
    catch (InputMismatchException e){ 中的InputMismatchException什么意思?

    上面这两个很少用到,可以自己参考文档看一下。http://tool.oschina.net/apidocs/apidoc?api=jdk-zh

    catch (ArrayIndexOutOfBoundsException e){ 中的ArrayIndexOutOfBoundsException什么意思?
    ////
    上面这个异常(类名以Exception是系统定义的异常),主要是指数组、集合等数据结构的下标越界。
    比如你的数组一共只有5个元素,但你用array[5]进行访问,就会报错。(数组下标从0开始。)

    Scanner sc = new Scanner(System.in); 这个Scanner是什么类?

    官方解释:
    一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路