题目:
卡车要装载一批货物,货物有3种商品:电视、计算机和洗衣机。需要计算出大货车和小货车各自所装载的3种货物的总重量。
要求:(1)有一个IGoods接口,该接口中有一个方法:public double getWeight();
(2)有3个实现该接口的类:Television、Computer和WashMachine。这3个类通过实现IGoods接口的getWeight()方法给出自重。(Television、Computer和WashMachine 的重量分别为45.5,65.5和145);
(3)有一个Truck类,该类用IGoods接口类型的数组作为成员,那么该数组的单元就可以存放Television对象、Computer对象以及WashMachine对象的引用。程序能输出Truck对象所装载的货物的总重量。
程序模板
//Road.java
interface IGoods{
public double getWeight();
}
class Television implements IGoods{
//实现getWeight()方法
}
class Computer implements IGoods{
//实现getWeight()方法
}
class WashMachine implements IGoods{
//实现getWeight()方法
}
class Truck{
private IGoods[] goods;
private double totalWeights;
public Truck(IGoods[] goods) {
this.goods=goods;
}
public double getTotalWeights(){
this.totalWeights=0;
//计算totalWeights
return this.totalWeights;
}
}
这个很简单啦 我就不写了
主要是第二小问
修改上述程序,为Truck类增加一个maxLoad成员变量(最大载重量),随机往车上摆放货物,直至装满,打印该车装载三种货物的数量。
参考方案:建立一个包含3个元素的IGoods数组goodsType[],分别存放三种电器的实例,然后用goodsType[rnd]表示一件随机电器放入货物列表~~(rnd为1-3的随机整数)~~ (这里老师写错了 rnd应该是0-2);Truck类的私有成员变量goods考虑用ArrayList泛型。
下面代码贴图片了 估计看到这题的就是下一届了趴…
我先贴一下我的代码 很丑陋 勿喷勿喷:
///
老师给的代码:
老师说思路在Truck类应该要添加一个getload方法 虽然题目没说但是应该会想到(呜呜反正我没想这样添加)
还有个注意点就是main里面的循环啦 使用了while(true)这亚子来判断(小心用这个方法) 就酱紫
package ep07;
import java.util.ArrayList;
import java.util.Scanner;
public class Truck {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入x:");
Scanner in=new Scanner(System.in);
double x= in.nextDouble();
Trucky bigTruck=new Trucky(x);
IGoods[] goodsTypeGoods=new IGoods[3];
goodsTypeGoods[0]=new Television();
goodsTypeGoods[1]=new Computer();
goodsTypeGoods[2]=new WashMachine();
int rnd;
int t=0,c=0,ww=0;
while(true) { //注意注意
rnd=(int)(Math.random()*3);
if(bigTruck.getload(goodsTypeGoods[rnd])) {
switch(rnd) {
case 0:t++;break;
case 1:c++;break;
case 2:ww++;break;
}
}
else {
break;
}
}
System.out.println("汽车的载重量:"+bigTruck.getTotalWeight());
System.out.println("Telvison:\t"+t+" Computer:\t "+c+" WashMachine:\t "+ww);
}
}
interface IGoods{
public double getWeight();
}
class Television implements IGoods{
public double getWeight() {
return 45.5;
}
}
class Computer implements IGoods{
public double getWeight() {
return 65.5;
}
}
class WashMachine implements IGoods{
public double getWeight() {
return 145;
}
}
class Trucky{
private double maxload;
//private double getTotalWeight;
private ArrayList<IGoods> goods=new ArrayList<IGoods>();
public Trucky(double maxload) {
this.maxload=maxload;
}
public double getTotalWeight() {
double getTotalWeight=0;
for(int i=0;i<goods.size();i++) {
getTotalWeight+=goods.get(i).getWeight();
}
return getTotalWeight;
}
public boolean getload(IGoods go) {
if(go.getWeight()+this.getTotalWeight()<=maxload) {
goods.add(go);
return true;
}
return false;
}
}
新人一枚~请多指教