终于写完,请大神们看看还有什么可以修改的地方,自我感觉应该还能优化,但是找不到地方了。

来源:12-1 综合练习

桃子叔叔

2016-05-27 22:58

package models;

import java.util.*;
/**
 * 租车系统主要功能测试类
 * @author My
 *
 */
public class test {
    public static void main(String[] args) {
        //欢迎界面
        System.out.println("欢迎使用嗒嗒租车系统:");
        System.out.println("您是否要租车:1.是\t0.否");
        Scanner scanner = new Scanner(System.in);
        int choose = scanner.nextInt();
        //判断用户输入
        while(true){
            if(choose==1){
                break;
            }else if(choose==0){
                System.out.println("谢谢使用,再见!");
                return;
            }else{
                System.out.println("输入有误,请根据提示重新输入您想选择的数字;\n您是否要租车:1.是\t0.否");
                choose = scanner.nextInt();
            }
        }
        //显示可用车型及相关信息
        System.out.println("您可租车的类型及其价目表:");
        System.out.println("序号\t汽车名称\t租金\t\t容量");
        Car[] cars ={new AudiA4(1,"奥迪A4",500,4),new Mazda6(2,"马自达6",400,4),
                new PickupSnow6(3,"皮卡雪6", 450, 4, 2),new GoldenDragon(4,"金龙", 800, 20),
                new SonghuaRiver(5,"松花江", 400, 4),new Iveco(6,"依维柯", 1000, 20)};
        
        for(int i=0;i<cars.length;i++){
            System.out.print((i+1)+".\t"+cars[i].getName()+"\t"+cars[i].getPrice()+"元/天");
            if(cars[i].getPassengerCar()==0){
                System.out.println("\t载货:"+cars[i].getCargo()+"吨");
            }else if(cars[i].getCargo()==0){
                System.out.println("\t载人:"+cars[i].getPassengerCar()+"人");
            }else{
                System.out.println("\t载人:"+cars[i].getPassengerCar()+"人载货:"+cars[i].getCargo()+"吨");
            }
        }
        //判断租车数量
        System.out.println("请输入您要租汽车的数量:");
        int sum = scanner.nextInt();
        //定义总价并初始化为0
        double totalPrice = 0;
        //定义租车天数并初始化为0
        int days = 0;
        int[] nums=new int[sum];
        //根据用户输入的选择,累加金额
        for(int i=0;i<sum;i++){
            System.out.println("请输入第"+(i+1)+"辆车的序号:");
            int num = scanner.nextInt();
            //判断用户输入是否正确,如果错误则提示重新输入
            while(num<0||num>7){
                System.out.println("输入错误,请重新输入!");
                System.out.println("请输入第"+(i+1)+"辆车的序号:");
                num = scanner.nextInt();
            }
            //将用户选择的车型的编号保存到数组里,便于以后统计使用
            nums[i]=num-1;//这里为什么要减1我还没想明白,求大神解释一下。。。。。。。。。。
            totalPrice+=cars[num-1].getPrice();
        }
        System.out.println("请输入租车天数:");
        days = scanner.nextInt();
        //统计功能
        System.out.println("您的账单:");
        System.out.println("***可载人的车有:");
        //定义总载人量并初始化为0
        int passengers = 0;
        //如载人数为0则表示不能载人,循环输出即可。
        for(int i=0;i<sum;i++){
            if(cars[nums[i]].getPassengerCar()!=0){
                passengers += cars[nums[i]].getPassengerCar();
                System.out.print(cars[nums[i]].getName()+"\t");
            }
        }
        System.out.println("共载人:"+ passengers +"人");
        System.out.println("***可载货的车有:");
        //定义总载货量并初始化为0
        int goods = 0;
        //同理,载货量为0表示无法载货,循环输出。
        for(int i=0;i<sum;i++){
            if(cars[nums[i]].getCargo()!=0){
                goods += cars[nums[i]].getCargo();
                System.out.print(cars[nums[i]].getName()+"\t");
            }
        }
        System.out.println("共载货:"+ goods +"吨");
        //总价*天数=最终价格
        System.out.println("***租车总价格:"+(totalPrice*days)+"元");
    }
}


写回答 关注

4回答

  • song_Android
    2016-06-07 22:56:50

    你是多少辆车就有多少个对应的子类么....

    桃子叔叔

    只对车的类型有子类。

    2016-06-09 20:52:11

    共 1 条回复 >

  • qq_浙江_Quern_0
    2016-05-28 09:24:51

    需要优化的地方很多,例如:你代码全在一个main方法里写完,应该使用类和对象的方法构写,这样的代码看的很累的

    桃子叔叔 回复mbk_vi...

    恩恩,好的,感谢大神提点

    2016-05-28 19:02:27

    共 3 条回复 >

  • 桃子叔叔
    2016-05-27 23:19:48

    知道了,我被new对象时赋值的第一个数字迷惑了。实际上第一台车是0。所以选择的时候要减一。。


  • 桃子叔叔
    2016-05-27 23:00:36

    父类和两个接口以及子类我就没贴出来了,比较简单。

    桃子叔叔

    求大神解释一下为毛SUM数组那里num的值要减一才能对呢

    2016-05-27 23:01:46

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530655 学习 · 6091 问题

查看课程

相似问题