终于搞明白对象数组了,发个作业分享!理解有误求大神指正!!
先定义一个类,用于对象数组(图书资料就在这个数组里面)的建立
package Exception;
public class Book {
String name ; //定义一个书名的变量
int order ; //定义一个图书序号的变量
Book(){
//这是一个无参的构造方法,用来建立这个类的对象
}
public Book(String newName , int newOrder){
this.name =newName;
this.order= newOrder;
//这是一个有参的构造方法,用来建立对象数组
}
//下面就是两个变量的 get 和set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getOrder() {
return order;
}
public void setOrder(int order) {
this.order = order;
}
@Override
//重写toString 方法
public String toString() {
return "书名:"+name+"序号:"+order;
}
}
//下面是一个自定义的异常
package Exception;
public class InputError extends Exception {
private static final long serialVersionUID = 1L; //这句话我实在不知道干嘛的
InputError(){
}
InputError(String err){
super(err);
}//根据老师的视频定义一个无参和一个有参的构造方法,虽然我不是特别清楚具体含义。
}
//下面又是一个自定义的异常
package Exception;
public class MissBook extends Exception {
private static final long serialVersionUID = 1L;
MissBook(){
}
MissBook(String err){
super(err);
}
}
下面是借阅系统的构建
package Exception;
import java.util.Scanner;
public class RentProcess {
Scanner sca =new Scanner(System.in);//创建Scanner输入对象
public static void main(String[] args) throws InputError, MissBook {
// TODO Auto-generated method stub
RentProcess rp = new RentProcess();
rp.Yn();//图书租约系统
}
void Yn() throws InputError, MissBook {
System.out.println("请问你是否借阅图书");//判断是否进入系统
System.out.println("借书输入1,结束请挂机");
String yn =sca.next();
try {
if("1".equals(yn)) {
System.out.println("XX借书系统欢迎您的使用");
process();
}else {
throw new InputError("错啦");//异常抛出
}
}catch(InputError e) {
System.out.println("命令输入错误,请根据提示输入数字命令");//捕获InputError异常并处理
Yn();
}
}
void process()throws InputError, MissBook{
//进入系统
System.out.println("以下为图书列表");//展示图书清单
Book [] book = new Book [10];
book[0]=new Book("红楼梦",1);
book[1]=new Book("西游记",2);
book[2]=new Book("三国演义",3);
book[3]=new Book("水浒传",4);
book[4]=new Book("莎士比亚传记",5);
book[5]=new Book("罗马的复兴",6);
book[6]=new Book("飞人乔丹",7);
book[7]=new Book("红与黑",8);
book[8]=new Book("命令与征服",9);
book[9]=new Book("帝国时代",10);
for(int i = 0 ; i<book.length ; i++) {
//遍历数组
System.out.println("书名:"+book[i].getName()+"//序号"+book[i].getOrder());
}
System.out.println("输入命令:1-按照名称查找图书;2-按照序号查找图书");
String find = sca.next();
try {
if("1".equals(find)) {
//进入图书名称查找
System.out.println("请输入图书名称");
String bookname = sca.next(); //这里输入的时候记得点一下控制台,控制台不好使,可能出现错误 例如输入“西游记”,实际程序接收为“xiyouji西游记”,从而导致出错。
for(int j = 0 ; j<book.length ; j++) {
if(bookname.equals(book[j].getName())) {
//匹配数组内name
System.out.println("查找到图书:"+book[j].getName()+"序号为"+book[j].getOrder());
return;
}
}throw new MissBook("图书不存在");
}else if("2".equals(find)) {
//进入图书序号查找
System.out.println("请输入图书序号");
int bookorder = sca.nextInt();
for(int k = 0 ; k<book.length ; k++) {
if(bookorder==book[k].getOrder()) {
//匹配数组内order
System.out.println("查找到图书:"+book[k].getName()+"序号为"+book[k].getOrder());
return;
}
}throw new MissBook("图书不存在");
}else {
throw new InputError("命令输入错误,请根据提示输入数字命令");//抛出异常
}
}catch(InputError e){
System.out.println("命令输入错误,请根据提示输入数字命令");//捕获输入异常并处理
process();
}catch(MissBook e) {
System.out.println("图书不存在");//捕获图书不存在异常,并进行处理
process();
}
}
}