Truck Television Computer 和 WashMachine 之间的LoveStory

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

题目:
卡车要装载一批货物,货物有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;
}
	
}

新人一枚~请多指教

货车装载一批货物,货物由电视机、计算机洗衣机3种商品组成。货车需要计算出整批货物的质量,要求如下: (1)定义一个ComputerWeight接口,该接口定义一个计算质量的方法; (2)定义3个实现接口的类分别是:TelevisionComputerWashMachine; (3)定义一个卡车Truck类,该类以ComputerWeight接口类型的数组作为成员,由该数组就可以存放Television对象的引用;Computer对象的引用 WashMachine对象的引用; (4)定义一个检测货车重量类CheckCarWeight;假定货车共装载的1000件货物,共分成3大类分别是电视机每台重量是5.8kg;电脑每台重3.2kg;洗衣机每台重26.8kg,按【实验步骤】中的【实验】程序模板检测货物的重量。 【实验步骤】 创建Java项目为expriement3_2330120101,并在项目的src目录下添加自己姓名的包,在包下按实验1至实验3要求分别创建类。 【实验3】程序模板,请模板要求将【代码】替换成Java程序代码 public interface ComputerWeight { public double computerWeight(); } public class Television implements ComputerWeight{ 【代码1】//重写 computerWeight() } public class Computer implements ComputerWeight{ 【代码2】 // 重写computerWeight() } public class WashMachine implements ComputerWeight{ 【代码3】 // 重写computerWeight() } public class Truck { ComputerWeight[] goods; double totalWeight=0.0; public Truck(ComputerWeight[] goods){ this.goods=goods; } public void setGoods(ComputerWeight[] goods) { this.goods = goods; } public double getTotalWeight() { totalWeight=0; 【代码4】//计算totalWeight return totalWeight; } }
最新发布
12-03
实验1 Java语言基础 4 一、实验目的 4 二、实验要求 4 三、实验内容 4 (一) 声明不同数据类型的变量 4 (二) 了解变量的使用范围 5 (三) 使用关系运算符逻辑运算符 5 (四) 使用表达式语句与复合语句 6 (五) 使用选择语句 6 (六) 使用循环语句 8 实验2 面向对象编程 11 一、实验目的 11 二、实验要求 11 三、实验内容 11 (一)创建 Applet 应用小程序 11 (二)创建对象并使用对象 12 (三)编写显示当前日期时间的程序 13 (四)使用修饰符 14 (五)方法中参数传递 15 (六)类的继承性 16 (七)类的多态性 18 实验3 包、接口与异常处理 22 一、实验目的 22 二、实验要求 22 三、实验内容 22 (一)了解并使用 Java 的系统包 22 (二)创建并使用自定义包 22 (三)使用接口技术 24 (四)了解异常处理机制 25 实验4 常用系统类的使用 27 一、实验目的 27 二、实验要求 27 三、实验内容 27 (一)了解 Applet 的生命周期 27 (二)使用数学函数类 28 (三)使用日期类 29 实验5 建立图形用户界面 32 一、实验目的 32 二、实验要求 32 三、实验内容 32 (一)创建图形用户界面 32 (二)了解事件处理机制 34 (三)建立独立运行的窗口界面并使用匿名类 36 (四)使用 Swing 组件 39 (五)使用自定义对话框与内部类 41 实验6 图形处理 44 一、实验目的 44 二、实验要求 44 三、实验内容 44 (一)使用图形类 Graphics 44 实验7图形处理(二) 47 一、实验目的 47 二、实验要求 47 三、实验内容 47 (一)幻灯机效果——连续显示多幅图像 47 (二)使用滚动条改变背景颜色 48 (三)Applet 与 Application 合并运行 49 (四)创建电闪雷鸣的动画 50 实验8 流与文件 53 一、实验目的 53 二、实验要求 53 三、实验内容 53 (一)使用标准数据流的应用程序 53 (二)使用文件输入输出流的应用程序 54 (三)使用随机文件类的应用程序 54 (四)使用数据输入输出流与文件输入输出流类的应用程序 55 (五)使用对象输入输出流的应用程序 56 实验9 线程 58 一、实验目的 58 二、实验要求 58 三、实验内容 58 (一)Thread子类的方法实现多线程 58 (二)实现Runnable接口方法实现多线程 59 实验10 数据库的连接:JDBC 61 一、实验目的 61 二、实验要求 61 三、实验内容 61 (一)配置ODBC数据源 61 (二)编写程序,按照下表的结构建立"student"表 61 (三)编写程序,完成填写功能 62 (四)编写程序,完成查询功能 62
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值