问答详情
源自:1-9 经验总结

终于搞明白对象数组了,发个作业分享!理解有误求大神指正!!

https://img2.mukewang.com/5b4dbb8d0001746b03780581.jpg

https://img.mukewang.com/5b4dbb8d0001ec6403900411.jpg

https://img3.mukewang.com/5b4dbb8e0001420604320585.jpg

先定义一个类,用于对象数组(图书资料就在这个数组里面)的建立

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();

}

}

}

提问者:老丶斑鸠 2018-07-17 17:49

个回答

  • 寒戈
    2018-07-20 21:43:19

    String[] p = {"红楼梦","西游记","三国演义","水浒传","莎士比亚传记","罗马的复兴","飞人乔丹","红与黑","命令与征服","帝国时代",};

    for(int i=0;i<p.length;i++){

    book[i]=new Cl(p[i],i+1);

    }

    //这样会不会好点...

  • 小宋童鞋
    2018-07-18 16:37:33

    private static final long serialVersionUID = 1L;

    Java中serialVersionUID的解释;serialVersionUID作用是序列化时保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。

    不懂建议去查java:serialVersionUID