java跑穿_Java 长跑

1、因为人数不定,所以需要用到线性表或者链表,粗看之下,链表似乎效率高(事实貌似未必。。。)

2、用一个package存放链表的定义,其中MyList为接口,MyAbstractList 实现接口,MyLinedList 继承MyAbstraList

3、刚百度了下接口和继承的区别,原来java不能多重继承,【多重继承就一个子类继承多个父类】,但是允许实现多个接口

4、另外,如果一个有一个父类,那么他应该被定义成Abstract

5、每个人都有很多信息,比如学号,起点、终点、用时,总距离,平均速度,在C语言中,这些信息应该存放在结构体,但是在java中我们用一个自定义类:datasheet来存放

6、在main函数里,首先要读取一行,然后split成多段,用字符串数组保存,然后 new 一个新的datasheet对象stu,先初始化他的编号,接着遍历已有的list,看看有无同名,有,则用update函数,无则把这个stu 添加到list里面,循环,直到结束,然后遍历所有list,把距离、速度、学号输出

7、思路很简单,一开始就想到了,只是以前没有干过这种事情,所以在具体实现上有困难,所以现在要趁热回顾一下

8、新建datasheet对象student并且初始化它的编号

DataSheet student = new DataSheet(); //放入DataSheet里

student.setNumber(subline[0]);

9、遍历已有的list,看看有无同名的记录

int temp = list.indexOfNumber(student);

10、此处的遍历是具体的遍历,仅仅查找有无 number一样的记录,所以要具体写indexOfNumber

首先,此方法对象是list,所以应该写在MyLinkedList里

但是,蛋疼的是,对比的东西是 number,而number又是datasheet里的变量,所以要把进行比较的两个变量转化成datasheet类型(关键)

public intindexOfNumber(Object o){if(first == null)return -1;

Node current=first;for(int i=0; i

DataSheet student=(DataSheet)current.element;if(student.equals(o))returni;else current =current.next;

}return -1;

}

11、上一步还要重写 equals 方法

因为 equals 的对象是 student 这是datasheet里的变量,所以根据对象是谁,就把方法重写在哪的原则

equals 应该重写在 datasheet 里(关键)

具体重写很简单,只用 eclipse 自带的重写equals 功能根据变量 number 重写就OK了

12、写完 indexOfNumber方法后,就简单了

if(temp == -1){

student.initial(subline[0], subline[1].charAt(0), Long.parseLong(subline[2]));

list.addLast(student);//列表末未添加一个记录

}else{

student=(DataSheet)list.get(temp);

student.update(subline[0], subline[1].charAt(0), Long.parseLong(subline[2]));

list.set(temp, student);//更新此人的数据

}

13、但是最后还有一个关卡,要遍历所有的记录,把 number、speed、distance 输出来

只要在datasheet里重写 toString 方法就OK了

publicString toString() {//TODO Auto-generated method stub

return String.format("Number:%s , Distance:%d , Speed:%f",

number, distance, speed) ;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值