从大脑一片空白到最后一步步把代码写出来,经历了很多,也看了很多慕友写的代码,都太厉害了,但有一些地方还是难以理解。
故此我用自己的理解把这个项目写了下来,相信相对于初学的慕友应该能够看得懂,尤其是关于对象数组这块,我记得对象数组老师应该是没有讲到过的(也有可能我记错了,但是翻了好几遍真没发现啊。。),因此自己问了度娘关于这方面的知识,才断断续续的写了出来,当然也借鉴了其他慕友的代码,启发也很大,总之,感谢这个平台指引我迈入这个领域,要学的还要太多,一起加油吧!
父类Car.java
package com.practise;
public class Car {
//首先定义父类的属性:车的品种与每天的租金。
public String name;
public float rent;
}
子类Bus.java
package com.practise;
/*
* 子类为巴士,继承父类,只具有载客的属性
*/
public class Bus extends Car {
//定义属性载客量,但由于载客这个属性是巴士独有的,因此采用private修饰
private int carry;
//有参的构造方法,定义Bus的三个属性:名称、载客量、每天的租金
public Bus(String name,int carry,float rent){
this.name=name;
this.carry=carry;
this.rent=rent;
}
public int getCarry() {
return carry;
}
//toString 方法,将输出的值转化为字符串
public String toString() {
return name+"\t"+rent+"元/天\t"+carry+"人\t";
}
}
子类Truck.java
package com.practise;
/*
* 子类为货车,继承父类car,具有载客的属性
*/
public class Truck extends Car {
private float load;//私有属性为载货量
//定义对象的三个属性:类型、载重、每天的租金,并将其传递进来
public Truck(String name,float load,float rent){
this.name=name;
this.load=load;
this.rent=rent;
}
public float getLoad() {
return load;
}
//toString 方法,将输出的值转化为字符串
public String toString() {
return name+"\t"+rent+"元/天\t"+load+"吨\t";
}
}
子类Pika.java
package com.practise;
public class Pika extends Car {
private int carry;//两个私有属性:既能载人,又能载货
private float load;
//定义皮卡的四个属性
public Pika(String name,int carry,float load,float rent){
this.name=name;
this.carry=carry;
this.load=load;
this.rent=rent;
}
public int getCarry() {
return carry;
}
public float getLoad() {
return load;
}
public String toString() {
return name+"\t"+rent+"元/天\t"+carry+"人\t"+load+"吨\t";
}
}
测试类Initial
package com.practise;
import java.util.Scanner;
public class Initial {
public static void main(String[] args) {
//创建一个长度为6的对象数组,用来存放所有车的参数
Car[] car=new Car[6];
//创建6个车的对象,并赋值;由于是继承关系,所以可以直接指向子类对象
Car c1=new Truck("小货车",3.5f,500f);
Car c2=new Truck("大货车",7.8f,800f);
Car c3=new Bus("小客车",12,400f);
Car c4=new Bus("大客车",25,900f);
Car c5=new Pika("小皮卡",4,1.1f,600f);
Car c6=new Pika("大皮卡",6,2.5f,1100f);
//将对象放到数组内
car[0]=c1;
car[1]=c2;
car[2]=c3;
car[3]=c4;
car[4]=c5;
car[5]=c6;
//导入输入函数
Scanner input=new Scanner(System.in);
//进入主界面
System.out.println("****欢迎您使用答答租车系统****");
System.out.println("请问您是否租车");
System.out.println("是:输入1 否:输入任意键退出");
if(input.nextInt()==1){
System.out.println("您可租车的类型以及价目表");
System.out.println("序号\t汽车名称\t租金\t容量\t");
//使用for循环遍历车库中的车
for(int i=0;i<car.length;i++){
System.out.println((i+1)+"\t"+car[i]);
}
System.out.println("请输入您想要租汽车的数量");
int carNum;
carNum=input.nextInt();
//建立一个新的数组carTotal,用来保存客户所选的车型,数组类型为Car。
Car[] carTotal=new Car[carNum];
for(int j=1;j<=carNum;j++){
System.out.println("请输入第"+j+"辆车的序号");
int num;
num=input.nextInt();
//将用户所选的车的序号对应的车型放入数组carTotal中
carTotal[j-1]=car[num-1];
}
System.out.println("请输入租车天数:");
int carDay;
carDay=input.nextInt();
System.out.println("您的账单:");
//调用方法-总载客数
totalCarry(carTotal);
//调用方法-总载货量
totalLoad(carTotal);
//调用方法-总价格
totalPay(carTotal,carDay);
}else{
System.out.println("输入错误,退出");
}
input.close();//关闭输入函数
}
public static void totalCarry(Car[] carTotal){
int k=0;//定义总载客数 k
System.out.println("***可载人的车有:");
for(int i=0;i<carTotal.length;i++){
//确认值的类型是否为Bus类型
if(carTotal[i] instanceof Bus){
//如果是Bus类型,则获取数组中对应的值
k+=((Bus)carTotal[i]).getCarry();
System.out.print(((Bus)carTotal[i]).name+"\t");
}else if(carTotal[i] instanceof Pika){
k+=((Pika)carTotal[i]).getCarry();
System.out.print(((Pika)carTotal[i]).name+"\t");
}
}
System.out.println("共载人数:"+k+"人");
}
public static void totalLoad(Car[] carTotal){
float m=0f;//定义总载货量 m
System.out.println("***可载货的车有:");
for(int i=0;i<carTotal.length;i++){
if(carTotal[i] instanceof Truck){
m+=((Truck)carTotal[i]).getLoad();
System.out.print(((Truck)carTotal[i]).name+"\t");
}else if(carTotal[i] instanceof Pika){
m+=((Pika)carTotal[i]).getLoad();
System.out.print(((Pika)carTotal[i]).name+"\t");
}
}
System.out.println("共载货:"+m+"吨");
}
public static void totalPay(Car[] carTotal,int carDay){
float n=0;//定义总费用 n
for(int i=0;i<carTotal.length;i++){
n+=carTotal[i].rent;
}
n*=carDay;
System.out.println("租车的总费用为:"+n);
}
}
有需要改进的地方希望各位厉害的慕友能够指出谢谢!
热门评论
这篇代码写的逻辑清楚 很好理解 赞 赞
对象和数组在第一季。。。你看的是第二季,当然找到了
你好,我也是初学者,你写的看起来很有条理,也很清楚,但是我觉得代码量感觉有点大