手记

Java攻城獅第二季綜合練習——初學者好懂版

在公司裏開始學習Java,感覺鴨梨有些大,但是也覺得動力很大,這個是實現的代碼,暫時沒有用到多態的性質,這是1.0初學版,注釋寫得很詳細,之後再利用接口來改動。輸入法不知出什麽問題衹有繁體了,望沒有閲讀困難。。。

补充:第二天我在复习的时候再看这个代码,发现之前忘说我的学习经验:看
程序一定先看代码,然后理解之后再看注释,这样的话,注释就像我在和你一起探讨问题甚至辩论问题,因为注释所以我们不是一个人在战斗。
Car父類

package com.imooc;

public abstract class Car {
    public String name;
    public int price;
}

Coach類(客車)

package com.imooc;

public class Coach extends Car{
   private int carry;
   public Coach(String name,int carry,int price){
       this.name = name;
       this.carry = carry;
       this.price = price;
   }
   public int getCarry(){
       return carry;
   }
   public String toString(){
       return(name+"\t"+price+"元/天 \t"+carry+"人\t");
   }

}

Truck類(貨車)

package com.imooc;

public class Truck extends Car {
     private float load;
     public Truck(String name,float load,int price){
         this.name = name;
         this.load  = load;
         this.price  = price;
     }
     public float getLoad(){
        return load;
     }
    public String toString(){
        return (name+"\t"+price+"元/天"+"\t"+load+"吨\t");
    }
}

Pickup類(皮卡)

package com.imooc;

public class Pickup extends Car{
    private float load;
    private int carry;
    public Pickup(String name,int carry,float load,int price){
        this.name = name;
        this.carry = carry;
        this.load = load;
        this.price = price;
    }
    public int getCarry(){
       return carry;
    }
    public float getLoad(){
        return load;
    }
    public String toString(){
        return(name+"\t"+price+"元/天\t"+carry+"人\t"+load+"吨\t");
    }
}

Initial類 (主體)

package com.imooc;
import java.util.*;
public class Initial {
    /**
     * @author 李科瑋
     * @version 1.0初學版
     * @see 租車系統
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //创建一个存放Car对象的(对象)数组,并初始化6个对象
         Car[] car  = new Car[]{
                 new Truck("大货车",18.5f,800),
                 new Truck("小货车",10.5f,500),
                 new Coach("大客车",30,1000),
                 new Coach("小客车",20,700),
                 new Pickup("大皮卡",8,3.5f,500),
                 new Pickup("小皮卡",5,2f,300)
         };
        //创建一个Scanner类的对象input用来获取用户输入
         Scanner input = new Scanner(System.in);
        //进入主页面
         System.out.println("****欢迎您使用答答租车系统****"); 
         System.out.println("请问您是否租车");
         System.out.println("是:输入1 否:输入任意键退出");
         //如果输入是1则显示下面的程序
         if(input.nextInt()==0){
             System.out.println("不好意思,亲,您走错公司了。");
         }
         else
         {
             System.out.println("您可以租用的汽车类型和价目表如下:");
             System.out.println("序号\t汽车类型\t租金\t容量\t");
             //遍历数组并显示输出,注意這裏的循環變量i的取值,因爲car數組在引用時必須遵守從0開始的規則
             //注意i的值改了之後,後面的循環條件也要改變
             for(int i=0 ; i < car.length ; i++){
                 System.out.println((i+1)+"\t"+car[i]);
             }
             System.out.println("请输入您想租用的数量:");
             //此时需要一个记录输入数量的变量,名为carNum
             int carNum;
             //将输入值赋值给carNum
             carNum = input.nextInt();
             //之后流程需要记录要使用哪些汽车,可能carNum不止一个,所以我们创建一个数组来存储
             Car[] useCar = new Car[carNum];
             //使用循环给useCar数组赋值,通过存着所有汽车类型的car数组实现
             for(int j = 1; j <= carNum ; j++){
                 System.out.println("请输入第"+j+"辆车的序号:");
                 //需要一个记录用户输入的变量,此处创建num
                 int num;
                 num = input.nextInt();
                 //取出car中的元素依次附给useCar数组,此处注意数组引用需要长度-1,因为数组从0位置开始存储
                 useCar[j-1] = car[num-1];
             }  
             System.out.println("请输入租用的天数:");
             //需要一個儲存租用天數的變量
             int rentDay;
             rentDay = input.nextInt();
             System.out.println("您的账单如下:");
             //調用下文中的方法,分別是計算載人數、載貨量、總價錢
             totalCarry(useCar);
             totalLoad(useCar);
             totalPay(useCar,rentDay);
         }
         //結束關閉程序
         input.close();
    }

    public static void totalCarry(Car[] useCar){
        //需要一個存儲縂載人數的變量
        int k = 0 ;
        System.out.println("**可载人的车有:");
        //遍歷要使用車的數組,判斷裏面各個元素對象可以由那種對象替換
        for(int i = 0; i <useCar.length; i++){
            if(useCar[i] instanceof Coach){
                System.out.println(useCar[i].name+"\t");
                //因需要得到Carry的值,而Car類中沒有getCarry方法,需將useCar[i]對象轉化為Coach對象
                k = k + ((Coach)useCar[i]).getCarry();
            }
            else if(useCar[i] instanceof Pickup){
                System.out.println(useCar[i].name+"\t");
                k = k + ((Pickup)useCar[i]).getCarry();
            }
        }System.out.println("共载人数:"+k+"人");     
    }

    //totalLoad與上面方法基本相同
    public static void totalLoad(Car[] useCar){
        float k = 0 ;
        System.out.println("**可载货的车有:");
        for(int i = 0; i <useCar.length; i++){
            if(useCar[i] instanceof Truck){
                System.out.println(useCar[i].name+"\t");
                k = k + ((Truck)useCar[i]).getLoad();
            }
            else if(useCar[i] instanceof Pickup){
                System.out.println(useCar[i].name+"\t");
                k = k + ((Pickup)useCar[i]).getLoad();
            }
        }
        System.out.println("共载货物:"+k+"吨");
    }

    public static void totalPay(Car[] useCar,int rentDay){
        int k = 0 ;
        //遍歷useCar數組,並獲取useCar數組中各個元素對象的price,最後計算總和
        for(int i = 0; i <useCar.length; i++){
           k = k + useCar[i].price;
        }
               k=k*rentDay;
        System.out.println("租车的总费用为:"+k+"元");
    }
}

運行結果:

****欢迎您使用答答租车系统****
请问您是否租车
是:输入1 否:输入任意键退出
1
您可以租用的汽车类型和价目表如下:
序号  汽车类型    租金  容量  
1   大货车 800元/天  18.5吨   
2   小货车 500元/天  10.5吨   
3   大客车 1000元/天     30人 
4   小客车 700元/天  20人 
5   大皮卡 500元/天  8人  3.5吨    
6   小皮卡 300元/天  5人  2.0吨    
请输入您想租用的数量:
2
请输入第1辆车的序号:
3
请输入第2辆车的序号:
1
请输入租用的天数:
2
您的账单如下:
**可载人的车有:
大客车 
共载人数:30人
**可载货的车有:
大货车 
共载货物:18.5吨
租车的总费用为:3600元
34人推荐
随时随地看视频
慕课网APP

热门评论

如果租车3辆,有2辆属于同一类,如何只输出一次名字,要不要考虑这个

如果租车3辆,有2辆属于同一类,如何只输出一次名字,要不要考虑这个

能  加好友  指点一下吗?


查看全部评论