下面一段代码红有四处不太明白,求教大虾指点下,
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命令输入错误!请根据提示输入数字命令!");
}
}
}
}