一开始觉得很简单,听老师讲很有思路。想好了然后开始写,就出现问题了,还是太年轻。看了慕友的代码,然后在自己写,收获还是有的,比如让我重新认识了 instanceof
car.java
package com.car_rental;
public class Car {
public String name;//车名
public float rent;//租金
}
Bus.java
package com.car_rental;
public class Bus extends Car {
private int carry;//载客量
public Bus(String name,int carry,float rent){
this.name=name;
this.carry=carry;
this.rent=rent;
}
public float getCarry() {
return carry;
}
@Override
public String toString() {
return name+"\t"+ rent + "元/天\t"+carry+"人\t";
}
}
Truck.java
package com.car_rental;
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;
}
@Override
public String toString() {
return name+"\t"+rent+"元/天\t"+load+"吨\t";
}
}
Pika.java
package com.car_rental;
public class Pika extends Car {
private float load; //载重量
private int carry; //载客量
public Pika(String name,float load,int carry,float rent){
this.name=name;
this.load=load;
this.carry=carry;
this.rent=rent;
}
public float getLoad() {
return load;
}
public float getCarry() {
return carry;
}
@Override
public String toString() {
return name+"\t"+rent+"元/天\t"+load+"吨 "+carry+"人\t";
}
}
Rent_car.java
package com.car_rental;
import java.util.Scanner;
public class Rent_car {
Scanner input=new Scanner(System.in);
//车库 定义父类的对象数组来 根据子类的特性 存入
public Car[] car={new Truck("小货车",3.5f,500f),new Truck("大货车",7.8f,800f),new Bus("小客车",12,400f),
new Bus("大客车",25,900f),new Pika("小皮卡",1.1f,4,600f),new Pika("大皮卡",2.5f,6,1100f)};
//总界面+操作
public void welcome(){
System.out.println("欢迎使用租车系统");
while(true){
System.out.println("请问您是否租车");
System.out.println("是:输入1 否:输入任意键退出");
int n;
if((n=input.nextInt())==1){
System.out.println("您可租车的类型及其价目表:");
//车辆信息
getcarList();
System.out.println("请输入您要租汽车的数量");
int car_num;//租车数量
car_num=input.nextInt();
//待租的汽车 将车库的信息放入其中
Car[] car_renting=new Car[car_num];
for(int i=1;i<=car_num;i++){
int num;
System.out.println("请输入您要租的第"+i+"辆车的序号:");
num=input.nextInt();
car_renting[i-1]=car[num-1];
}
//租车天数
int rent_day;
System.out.println("请输入租车天数");
rent_day=input.nextInt();
System.out.println("您的账单");
//总载人量
gettotalCarry(car_renting);
//总载重量
gettotalLoad(car_renting);
//总金额
getTotalPay(car_renting,rent_day);
}
else{
System.out.println("输入错误 已退出");
break;
}
}
}
//输出车库的全部信息
public void getcarList(){
int i;
System.out.println("序号\t汽车名称\t租金\t\t容量 ");
for(i=0;i<car.length;i++){
//车库中各信息不同 根据关键词 instanceof 来判别 在 向下转换输出
if(car[i] instanceof Bus){
System.out.println((i+1)+"\t"+((Bus)car[i]));
}
else if(car[i] instanceof Truck){
System.out.println((i+1)+"\t"+((Truck)car[i]));
}
else{//car[i] instanceof Pika
System.out.println((i+1)+"\t"+((Pika)car[i]));
}
}
}
//总载人量
public void gettotalCarry(Car[] car_renting){
int totalCarry=0;
System.out.println("**可载人的车:");
for(int i=0;i<car_renting.length;i++){
//载人有 Bus 和 Pika
if(car_renting[i] instanceof Bus){
totalCarry+=((Bus)car_renting[i]).getCarry();
System.out.print(((Bus)car_renting[i]).name+" ");
}
else if(car_renting[i] instanceof Pika){
totalCarry+=((Pika)car_renting[i]).getCarry();
System.out.print(((Pika)car_renting[i]).name+" ");
}
}
System.out.println("共载人数:"+totalCarry+"人");
}
//总载重量
public void gettotalLoad(Car[] car_renting){
float totalLoad=0f;
System.out.println("**载货的车有:");
for(int i=0;i<car_renting.length;i++){
//载重量有Truck 和 Pika
if(car_renting[i] instanceof Truck){
totalLoad+=((Truck)car_renting[i]).getLoad();
System.out.print(((Truck)car_renting[i]).name+" ");
}
else if(car_renting[i] instanceof Pika){
totalLoad+=((Pika)car_renting[i]).getLoad();
System.out.print(((Pika)car_renting[i]).name+" ");
}
}
System.out.println("共载重:"+totalLoad+"吨");
}
//总花费
public void getTotalPay(Car[] car_renting,int rent_day){
float totalPay=0f;
for(int i=0;i<car_renting.length;i++){
totalPay+=car_renting[i].rent;
}
totalPay *= rent_day;
System.out.println("**租车总价格:"+totalPay);
}
}
test.java
package com.car_rental;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Rent_car rent=new Rent_car();
rent.welcome();
}
}
热门评论
很想问问大佬,为什么要用instanceof 这个关键字呢,个人觉得不用并不影响什么
弱弱的问一句:Java入门第二季 这节课里面 ,老师讲过对象数组吗? 一脸懵逼啊。。