iMooc-Java入门第二季达达租车系统

最近在跟着慕课网的java教程回顾和复习java,同时也在查漏补缺中对本科阶段的知识做一个小型的总结。
第二季的视频用了三天看完,大作业用了一个上午写完。看视频过程中学习了eclipse强大的生成(generalize)和改错功能。
对java的面向对象特性和控制台IO做了复习,也新学了ArrayList的功能,收获比较大。

先贴上大作业要求的输出。


Paste_Image.png
Paste_Image.png
Paste_Image.png
代码借鉴了来自以下网页的代码

http://www.imooc.com/article/16652%20%20%20Java
http://blog.csdn.net/Joseph_Cherry/article/details/60530978

  • 主要思想是:建立一个Car父类,MotorCar是载人汽车子类,Truck是载货汽车子类,bothCar是皮卡(可载人也可载货)子类。用ArrayList存储各类车的名称、租金、容量。重写toString方法来解决输出各类车的信息价格表。

我的代码:

Car.java
package com.DADACar;
public class Car {
    public String name;
    public int price;
    
    public String getName() {
        return name;
    }
    public int getPrice() {
        return price;
    }
    public int getHumanNum() {
        // TODO Auto-generated method stub
        return 0;
    }
    public int getGoodsNum() {
        // TODO Auto-generated method stub
        return 0;
    }
}
motorCar.java
package com.DADACar;

public class motorCar extends Car {
    private int humanNum;
    
    public int getHumanNum() {
        return this.humanNum;
    }
    public motorCar(String name, int price, int humanNum){
        this.name=name;
        this.price=price;
        this.humanNum=humanNum;
    }
    public String toString(){
        return(name+"\t"+price+"元\\天    "+"载客量:"+humanNum+"人");
    }
}
trunckCar.java
package com.DADACar;
public class truckCar extends Car {
    private int goodsNum;

    public int getGoodsNum() {
        return this.goodsNum;
    }

    public truckCar(String name, int price, int goodsNum) {
        this.name=name;
        this.price=price;
        this.goodsNum=goodsNum;
        
    }
    public String toString(){
        return(name+"\t"+price+"元\\天    "+"载货量:"+goodsNum+"吨");
    }
}
bothCar.java
package com.DADACar;

public class bothCar extends Car {
    private int goodsNum;
    private int humanNum;
    public int getGoodsNum() {
        return this.goodsNum;
    }
    public int getHumanNum() {
        return this.humanNum;
    }
    public bothCar(String name, int price, int goodsNum, int humanNum){
        this.name=name;
        this.price=price;
        this.goodsNum=goodsNum;
        this.humanNum=humanNum;
    }
    
    public String toString(){
        return(name+"\t"+price+"元\\天\t"+"    载货量:"+goodsNum+"吨    载人量"+humanNum+"人");
    }
}
rentCarSystem.java //主函数在这里!!
package com.DADACar;

import java.util.ArrayList;
import java.util.Scanner;

public class rentCarSystem {
    
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("欢迎使用哒哒租车系统");
        System.out.println("您是否需要租车? 1-是 0-否");
        Scanner statusScanner = new Scanner(System.in);
        String begin = statusScanner.next();
        //statusScanner.close();
        while(true){
        switch(begin){
        case "1":
            systemInfoPrint();
            break;
        case "0":
            System.out.println("谢谢使用本系统,再见!");
            System.exit(0);
            break;
        default:
            System.out.println("输入的值有误!");
            }
        }
    }
    public static void systemInfoPrint(){
        ArrayList<Car> carlist = new ArrayList<Car>(6);
        carlist.add(new motorCar("奥迪A4",500,4));
        carlist.add(new motorCar("马自达6",400,4));
        carlist.add(new bothCar("皮卡雪6",450,2,4)); //货量,人量
        carlist.add(new motorCar("金龙",800,20));
        carlist.add(new truckCar("松花江",400,4));
        carlist.add(new truckCar("依维柯",1000,20));
        
        System.out.println("可供租用的车型信息有:");
        System.out.println("******************************************");
        System.out.println("序号\t车型        单价            容量");
        for(int i = 0;i<carlist.size();i++){
        System.out.print((i+1)+"\t");//不换行
        System.out.println(carlist.get(i));//换行,这里不知道行不行//行,get返回值是String,重写了Car的toString函数
        }
        
        int rentNum = 0;
        System.out.println("请输入租车数量:");
        Scanner rentNumScanner = new Scanner(System.in);
        rentNum = rentNumScanner.nextInt();
        
        Scanner carNoSC=new Scanner(System.in);
        int [] rentNumList = new int[rentNum];
        
        for(int i=0;i<rentNum;i++){
        System.out.println("请输入第"+(i+1)+"辆车的序号:");
        rentNumList[i]=carNoSC.nextInt();
        }
        
        System.out.println("请输入租用天数:");
        Scanner rentDaySC = new Scanner(System.in);
        int rentDayNum = rentDaySC.nextInt();
        
        
        int totalMan=0;
        int totalGoods=0;
        int totalPrice=0;
        StringBuilder humanOutput = new StringBuilder();
        StringBuilder goodsOutput = new StringBuilder();
        
        for(int i =0;i<rentNumList.length;i++){
            if(carlist.get(rentNumList[i]-1) instanceof motorCar){
                humanOutput.append(carlist.get(rentNumList[i]-1).getName());
                humanOutput.append(" ");
                totalMan = totalMan+carlist.get(rentNumList[i]-1).getHumanNum();
                totalPrice = totalPrice+rentDayNum*carlist.get(rentNumList[i]-1).getPrice();
            }
            else if(carlist.get(rentNumList[i]-1) instanceof truckCar){
                goodsOutput.append(carlist.get(rentNumList[i]-1).getName());
                goodsOutput.append(" ");
                totalGoods = totalGoods+carlist.get(rentNumList[i]-1).getGoodsNum();
                totalPrice = totalPrice+rentDayNum*carlist.get(rentNumList[i]-1).getPrice();
            }
            else{
                humanOutput.append(carlist.get(rentNumList[i]-1).getName());
                humanOutput.append(" ");
                goodsOutput.append(carlist.get(rentNumList[i]-1).getName());
                goodsOutput.append(" ");
                totalPrice = totalPrice+rentDayNum*carlist.get(rentNumList[i]-1).getPrice();
                totalMan = totalMan+carlist.get(rentNumList[i]-1).getHumanNum();
                totalGoods = totalGoods+carlist.get(rentNumList[i]-1).getGoodsNum();
            }
            
            
        }
        
        System.out.println("您的账单如下:");
        //重头戏
        System.out.println("**可载人的车有:");
        System.out.println(humanOutput+"\t共载人:"+totalMan+"人");
        System.out.println("**可载货的车有:");
        System.out.println(goodsOutput+"\t共载货:"+totalGoods+"吨");
        System.out.println("租车的总价是:");
        System.out.println(totalPrice+"元");

        
        //rentNumScanner.close();
        //carNoSC.close();
        //rentDaySC.close();
    }
}
  • 另外值得注意的是

Scanner输入流如果close了,就会出现如下所示的NoSuchElementException错误。

>Exception in thread "main" [Java](http://lib.csdn.net/base/javase).util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)at java.util.Scanner.next(Scanner.java:1416)

csdn博客中有分析说注释掉close()那一行就不报错了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,065评论 25 707
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,505评论 18 399
  • 转自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帅199207阅读 8,474评论 3 93
  • 一首陈奕迅的《你的背包》,将我的思绪拉到从前。 “那个背包载满纪念品和患难 还有摩擦留下的图案 它是我肩膀上的指环...
    菱然阅读 493评论 0 0
  • 弟在家乡真喜悦,兄在他乡熬病魔。核桃丰收精神爽,感冒趟在病床上。老婆儿子无人问,人生创业自折腾。老来方知父母心,生...
    璋哥说事阅读 190评论 0 0