首先贴一下程序要完成的功能的要求!
![QQ截图20161031223300 QQ截图20161031223300](https://images2015.cnblogs.com/blog/1054308/201611/1054308-20161106184829111-924727750.png)
![QQ截图20161031223242 QQ截图20161031223242](https://images2015.cnblogs.com/blog/1054308/201611/1054308-20161106184830627-2023654944.png)
接下来贴一下主程序!
初学者写的代码。。。用JAVA写的
package exc;
//输入错误异常
public class ErrorException extends Exception {
public ErrorException(){
System.out.println("命令输入错误!请根据提示输入数字命令!");
};
}
package exc;
//书籍不存在异常
public class NoException extends Exception {
//两个含参构造方法,第一个是‘图书名称不存在’异常
public NoException(String name){
System.out.println("图书"+name+"不存在");
}
//第二个是‘图书序号不存在’异常
public NoException(int num){
System.out.println("图书序号为"+num+"的书不存在");
}
}
package exc;
//建造的书籍类
public class Book {
String name;
int num;
public Book(){};
//含参的构造方法 用来建造带有名字和序号的书籍类
public Book(String name,int num){
this.name=name;
this.num=num;
}
}
package exc;
import java.util.Scanner;
public class Test {
static Test qwer=new Test();
Scanner reader=new Scanner(System.in);
//构建书籍类数组
Book[] books={new Book("高数", 1),
new Book("语文", 2),
new Book("英语", 3),
new Book("物理", 4),
new Book("化学", 5),
new Book("生物", 6)
};
public static void main(String[] args) throws NoException {
// TODO Auto-generated method stub
qwer.welcome();//提示欢迎
qwer.xunhuan(); //调用循环函数,当出现错误时一直运行程序,直到找到正确的书籍
}
//程序运行的主体
public void inputWelcome(int a) throws ErrorException, NoException{
if (a==1) {
System.out.println("输入图书名称" );//采用名称查找方法
String b=reader.next();
qwer.corrcetName(b);//用名称确认方法查找是否存在对应书籍
}else if (a==2) {
System.out.println("输入图书序号");//采用序号查找方法
int c=reader.nextInt();
qwer.corrcetNum(c);//用序号确认方法查找是否存在对应书籍
}else {
throw new ErrorException();//抛出输入错误异常
}
}
//主干程序,完成框架
public void retime() throws NoException{
int a=reader.nextInt();
try {
qwer.inputWelcome(a);
} catch (ErrorException e) {
// TODO Auto-generated catch block
qwer.welcome();
qwer.retime();
}
}
//循环函数,当出现异常时,捕获输入错误异常,并继续执行
public void xunhuan(){
try {
qwer.retime();
} catch (NoException e) {//捕获到输入错误异常时,继续执行程序,重新查找书籍
// TODO Auto-generated catch block
System.out.println("输入有误,请重新选择");
qwer.welcome();
qwer.xunhuan();
}
}
//查找输入序号时的确认函数
public void corrcetNum(int b) throws NoException{
int i=0;
//如果输入的序号大于数组长度或者为复数,则抛出输入错误异常
if (b>books.length||b<0) {
throw new NoException(b);
}
//数组一个个遍历,确认是否存在此序号书籍
for (; i < books.length; i++) {
if(books[i].num==b){
System.out.println("book:"+books[i].name);
System.out.println("恭喜您找到自己需要的书籍了!");
break;
};
}
}
//查找输入名称时的确认函数
public void corrcetName(String b) throws NoException{
int i = 0;
//数组一个个遍历,确认是否存在此名称书籍
for (; i < books.length;i++) {
if(books[i].name.equals(b)){
System.out.println("book:"+books[i].name);
System.out.println("恭喜您找到自己需要的书籍了!");
break;
};
}
//当遍历完整个程序,还是没有找到输入名称书籍,则抛出书籍不存在异常
if (i==books.length) {
throw new NoException(b);
}
}
//欢迎界面
public void welcome(){
System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找名称");
}
}
希望大家看到程序的可以去跑一跑!一起参考交流一下~!