您的位置:首页 > 编程语言 > Java开发

【java】初识catch-try-finally:模拟借书系统

2017-03-28 14:50 232 查看
慕课网-java入门第三季
                                                                                                                                             ——第一章 异常与异常处理

Throwable:

(1)Error(出现则程序瘫痪)

a.虚拟机错误(VirtualMachineError)

b.线程死锁(ThreadDeath)

(2)Exception(编码、环境、用户操作输入出现的问题):

a.非检查异常(RuntimeException):

空指针异常(NullPointerException)

数组下标越界异常(ArrayIndexOutOfBoundsException)
类型转换异常(ClassCastException)
算术异常(ArithmeticException)
b.检查异常(CheckException):

文件异常(IOException)
SQL异常(SQL Exception)

结构图:



模拟借书系统

要求:

1.定义字符串数组保存图书信息;

2.提示用户输入,分别按“书名”和“图书序号”查找图书;

3.根据输入信息进行适当的异常处理:

(1)如果输入类型错误,抛出“错误命令异常”,并提示重新输入;

(2)如果书名不存在,抛出“图书不存在异常”,并提示重新输入;

(3)如果图书序号超过字符传数组范围,抛出“图书不存在异常”,并提示重新输入。

import java.util.Scanner;

public class JieShu {
String[] shuming={"论语","计算机组成原理","软件安全"};
int[] shuhao={1,2,3};
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s=new Scanner(System.in);
JieShu js=new JieShu();
int ch=js.shuru();
while(ch!=' '){

if(ch==1){
System.out.println("输入图书名称");
String ming=s.nextLine();
js.shuMing(ming);
ch=js.shuru();
}
else if(ch==2){
System.out.println("输入图书序号");
int hao=s.nextInt();
s.nextLine();
js.shuHao(hao);
ch=js.shuru();
}
else{
System.out.println("输入错误,请重新输入!");
ch=js.shuru();
}

}
}

public int shuru(){
System.out.println();
System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
Scanner s1=new Scanner(System.in);
try{
int ch2=s1.nextInt();
s1.nextLine();
return ch2;
}catch(Exception e){
e.printStackTrace();//类型转换异常
//System.out.println("输入错误,请重新输入!");
return -1;
}
}

public void shuMing(String ming){
try{
int i=0;
while(i<4){
if(ming.equals(shuming[i])){
System.out.println("book:"+shuming[i]);
break;
}
else i++;
}//数组下标越界异常
}catch(Exception e){
e.printStackTrace();
System.out.println("图书不存在!");
}
}

public void shuHao(int hao){
try{
int i=0;
while(i<4){
String shum=shuming[i];
if(hao==i){
System.out.println("book:"+shuming[i]);
break;
}
else i++;
}//数组下标越界异常
}catch(Exception e){
e.printStackTrace();
System.out.println("图书不存在!");
}
}

}


   经过多次调试发现上述代码有问题,如每次输入选项(ch)为2,接下来再输入选项(ch)为1,发现存储shuming的String直接赋为0,跳过判断:



  是因为nextLine会接收‘\n’换行符,和nextDouble,nextInt等一起使用的时候会接收到上一个输入的换行符,于是需要在第25行、第43行处加上语句s.nextLine(); 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java try-catch