Truck Television Computer 和 WashMachine 之间的LoveStory

本博客介绍了一个基于接口和多态的货车装载货物的程序设计案例,通过实现IGoods接口,定义了不同商品的重量,并在Truck类中实现了随机装载货物直至达到最大载重的算法。详细讲解了如何使用ArrayList存储货物,以及如何通过随机选择商品进行装载,最终输出装载的总重量和各类商品数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:
卡车要装载一批货物,货物有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泛型。
下面代码贴图片了 估计看到这题的就是下一届了趴…
我先贴一下我的代码 很丑陋 勿喷勿喷:
///在这描述

就是那个for循环晕乎乎der 还有那个Truck写的很诡异 看了老师的代码之后发现简洁了很多 果然我是菜鸡本菜无敌呜呜呜

在这里插入图片描述
老师给的代码:
老师说思路在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;
}
	
}

新人一枚~请多指教

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值