为了账号安全,请及时绑定邮箱和手机立即绑定

租车 主要笔记 java第二季

标签:
Java

图片描述
1.父类Car
public abstract class Car {
public String name;
public int price;
public int goodCap;
public int manCap;
public Car(String name,int price){//构造方法
this.name=name;
this.price=price;
}
}
抽象类,约束子类必须包含构造方法。
构造方法,让该类实例化的时候执行哪些方法,初始化哪些属性。
2.子类ManCar
public class ManCar extends Car {
public ManCar(String name, int price,int manCap) {
super(name, price);
// TODO Auto-generated constructor stub
this.manCap=manCap;
}
public String toString(){
return(name+"\t\t"+price+"元/日"+"\t\t载客:"+manCap+"人\t");
}
}
重写构造方法,构造时必须传入字符串name,整型int,整型manCap;
重写toString方法,返还 name price元/日 载客manCap人 。
3.GoodsCar
public class GoodsCar extends Car {
public GoodsCar(String name, int price,int goodCap) {
super(name, price);
// TODO Auto-generated constructor stub
this.goodCap=goodCap;
}
public String toString(){
return (name+"\t\t"+price+"元/日"+"\t\t载货:"+manCap+"吨\t");
}
}
同2.
4.MGCar
public class MGCar extends Car {
public MGCar(String name, int price,int goodCap,int manCap) {
super(name, price);
// TODO Auto-generated constructor stub
this.manCap=manCap;
this.goodCap=goodCap;
}
public String toString(){
return(name+"\t\t"+price+"元/日"+"\t\t载客:"+manCap+"人"+"\t载货:"+goodCap+"吨");
}
}
同2.
5.Initial

import java.util.Arrays;
import java.util.Scanner;
public class Initial {
public static void main(String[] args) {
// TODO Auto-generated method stub
int first = 0;//首次
int[] rentNum = new int[100];//租车代码
int rentDays = 0;//租车天数
Car[] cars = {new ManCar("上海大众", 150, 5),new ManCar("雪佛兰", 210, 4),new GoodsCar("货车1", 100, 20),new MGCar("长城皮卡", 80, 5, 4)};
if(first==0){
System.out.println("~~欢迎使用达达租车系统~~");
}
while(first==0){
System.out.println("是否想要租车:\n"+"是:1\t"+"否:0");
Scanner input = new Scanner(System.in);
String str=input.next();
if("1".equals(str)||"0".equals(str)){
if("1".equals(str)){
showCarInfo(cars);
first++;
select(input, cars, rentNum);
Arrays.sort(rentNum);//排序,100个元素,其他都是零,租的车序号被排到最后。
System.out.println("请输入租赁天数:");
while(first==1){
first++;
try{
rentDays=input.nextInt();
}catch(Exception e){
System.out.println("你输入的信息有误,请重输:");
input.next();
first=1;
}
}
printList(rentNum,cars,rentDays);
}else{
System.out.println("感谢你的使用,欢迎下次使用");
input.close();
return;
}
}else {
System.out.println("你的输入有误,请重新输入");
first=0;
}
}
}

 private static void showCarInfo(Car[] cars){
      System.out.println("可租赁汽车价目表:\n序号\t汽车名称\t\t价格\t\t容量");
      for(int i=0;i<cars.length;i++){
           System.out.println(i+1+"\t"+cars[i].toString());
      }
 }

 private static void select(Scanner input,Car[] cars,int[] rentNum){
      int first=0;
      int num = 0;
      if(first==0){
          System.out.println("请输入你要租车的数量:");
      }
      try {
          num=input.nextInt();
          first++;
      } catch (Exception e) {
          System.out.println("你输入的数量信息错误,请重输:");
          first=0;
          select(input,cars,rentNum);
      }
      System.out.println("请输入你要选的车的编号:");
      int selNum;
      for(int i=0;i<num;i++){
          System.out.println("请输入第"+(i+1)+"辆车的序号:");
          try {
               selNum=input.nextInt();
               if(selNum>cars.length||selNum<=0){
                    System.out.println("输入有误,请重新输入:");
                    i--;
                    continue;
               }
               rentNum[i]=selNum;
          } catch (Exception e) {
               System.out.println("你输入的数量信息错误,请重输:");
               i--;
               input.next();
          }
      }
 }

 private static void printList(int[] rentNum, Car[] cars, int rentDays) {
      int sumPrice=0;
      int mancapSum=0;
      int goodscapSum=0;
      int selNum=0;
      int[] count=new int[cars.length];
      System.out.println("序号\t\t汽车名称\t\t租金\t\t容量\t\t\t数量");
      int i=0;
      for(int r=0;r<rentNum.length;r++){
          selNum=rentNum[r]-1;//rentNum数组100元素从头遍历,基本都是0,选择的车序号排升序在最后,0-1=-1.
          if(selNum!=-1){//代表车序号-1
               i++;
               sumPrice+=cars[selNum].price;//通过车在数组中的位置,取价格
               if(cars[selNum] instanceof ManCar){//判断是否是ManCar的实例化对象
                    mancapSum+=cars[selNum].manCap;
               }else if (cars[selNum] instanceof GoodsCar) {
                    goodscapSum+=cars[selNum].goodCap;
               }else {
                    goodscapSum+=cars[selNum].goodCap;
                    mancapSum+=cars[selNum].manCap;
               }
               if(r<rentNum.length-1 && rentNum[r] == rentNum[r+1]){//r<99 && 此元素与下一个元素相同,0
                    count[selNum]++; //数量+1
                    i--;               //行数-1,因为数量在同一行叠加
                    continue;
               }
               System.out.println(i+"\t\t"+cars[selNum]+"\t\t"+(count[selNum]+1));
          }

      }
      System.out.println("总载人:"+mancapSum+"人/日\t总载货:"+goodscapSum+"吨/日\t总金额:"+sumPrice*rentDays);
 }

}

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消