java實(shí)現(xiàn)租車系統(tǒng)
今天用JAVA編寫了一個(gè)租車系統(tǒng),過程中主要遇到的兩個(gè)問題:
1、輸出數(shù)組信息問題:
在得到cars[]數(shù)組后,要生成租車信息表,目前有兩種思路:一是用循環(huán)輸出;二是用Arrays.toString()輸出數(shù)組信息。
用toString()方法輸出數(shù)組輸出……@……形式的哈希碼地址,這里需要對(duì)toString()方法進(jìn)行重寫,在數(shù)組涉及到的類中進(jìn)行重寫。
不過用第二種方法輸出的其實(shí)還是一個(gè)數(shù)組,形式如圖所示。那么問題來(lái)了——還有沒有更好的輸出方法呢?
2、父類方法不能訪問子類成員變量:
本來(lái)在父類Car中寫好的getPersonCapacity()和getGoodCapacity()方法似乎不能訪問子類中的personCapacity和goodCapacity 這兩個(gè)成員變量,導(dǎo)致調(diào)用參數(shù)時(shí)始終為0;所以在各子類方法中又獨(dú)立加上了前面兩個(gè)方法,問題得以解決。
運(yùn)行效果圖:

代碼如下:
package rentCarSys;
/*
* 總共有三種車型:載人Auto,載貨Van,載人載貨Pickup
* Car 為這三種車型的父類
* 有4種屬性:
* 編號(hào) = number
* 品牌 = brand
* 租金/天 = fee
* 載人容量 = personCapacity
* 載貨容量 = goodCapacity
*/
public class Car {
int number;
String brand;
double fee;
int personCapacity;
double goodCapacity;
public Car(int number, String brand, double fee){ //構(gòu)造方法
this.number = number;
this.brand = brand;
this.fee = fee;
}
public int getNumber(){
return number;
}
public String getBrand(){
return brand;
}
public double getFee(){
return fee;
}
public int getPersonCapacity(){
return personCapacity;
}
public double getGoodCapacity(){
return goodCapacity;
}
}
package rentCarSys;
/*
* Auto為載人汽車,除了Car中的屬性之外還有載人容量 personCapacity
*/
public class Auto extends Car{
private int personCapacity;
public Auto(int number, String brand, double fee, int personCapacity) {
super(number, brand, fee);
this.personCapacity = personCapacity;
}
public int getPersonCapacity() {
return personCapacity;
}
@Override
public String toString() {
return number + "\t" + brand + "\t" + fee + "元/天\t" + personCapacity + "人\n";
}
}
package rentCarSys;
/*
* Van為載貨汽車,除了Car中的屬性之外還有載貨容量 goodCapacity
*/
public class Van extends Car{
private double goodCapacity;
public Van(int number, String brand, double fee, double goodCapacity) {
super(number, brand, fee);
this.goodCapacity = goodCapacity;
}
public double getGoodCapacity(){
return goodCapacity;
}
public String toString() {
return number + "\t" + brand + "\t" + fee + "元/天\t" + goodCapacity + "噸" + "\n";
}
}
package rentCarSys;
/*
* Pickup為載人載貨汽車,除了Car中的屬性之外還有載人容量 personCapacity,載貨容量goodCapacity
*/
public class Pickup extends Car{
private int personCapacity;
private double goodCapacity;
public Pickup(int number, String brand, double fee, int personCapacity, double goodCapacity) {
super(number, brand, fee);
this.personCapacity = personCapacity;
this.goodCapacity = goodCapacity;
}
public int getPersonCapacity() {
return personCapacity;
}
public double getGoodCapacity(){
return goodCapacity;
}
@Override
public String toString() {
return number + "\t" + brand + "\t" + fee + "元/天\t" +
personCapacity + "人\t" + goodCapacity + "噸\n";
}
}
package rentCarSys;
import java.util.Arrays;
import java.util.Scanner;
public class Login {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
Car[] cars = new Car[6];
System.out.print("歡迎使用答答租車系統(tǒng):");
System.out.print("您是否要租車?1、是 2、否(請(qǐng)輸入1或2)");
int input1 = input.nextInt();
if (input1 == 1){
System.out.println("下面是所有車的信息:");
cars[0] = new Auto(1, "奧迪A4", 500.0, 4);
cars[1] = new Auto(2, "馬自達(dá)6", 400.0, 4);
cars[2] = new Pickup(3, "皮卡雪6", 450.0, 4, 2);
cars[3] = new Auto(4, "金龍", 800.0, 20);
cars[4] = new Van(5, "松花江", 400.0, 4);
cars[5] = new Van(6, "依維柯", 1000.0, 20);
System.out.println("序號(hào)\t" + "汽車名稱\t" + "租金\t\t" + "容量(載人/載貨)");
System.out.println(Arrays.toString(cars));
// for(int i = 0; i < cars.length; i++){
// System.out.println("編號(hào):"+ (i+1) +" 品牌:"+ cars[i].getBrand()
// +" 租金:"+ cars[i].getFee() +"/天 載客量:"+ cars[i].getPersonCapacity()+"人"
// +" 載貨量:"+ cars[i].getGoodCapacity()+"噸" );
// }
}else{
System.out.println("謝謝使用,再見!");
}
System.out.print("請(qǐng)輸入你要租幾種車:");
int rentNum = input.nextInt();
//selected用來(lái)保存客戶選中了什么車型,以及每種車型的輛數(shù),與car數(shù)組是對(duì)應(yīng)關(guān)系
int[] selected = new int[6];
for (int i = 1; i <= rentNum; i++){
System.out.println("請(qǐng)輸入第" + i + "種車型的序號(hào):" );
int nums = input.nextInt() - 1;
System.out.println(cars[nums].getBrand() +"總共需要多少輛:");
int num = input.nextInt();
selected[nums] = num;
}
System.out.println("請(qǐng)輸入租車天數(shù):");
int daysNum = input.nextInt();
System.out.println("您的賬單:--------------------------");
double total = 0;
for (int i = 0; i < cars.length; i++){
if (selected[i] !=0 ){
System.out.println(selected[i] + "輛" + cars[i].getBrand() +
" 總共載客量:"+selected[i]*cars[i].getPersonCapacity()+"人"+
" 總共載貨量:"+selected[i]*cars[i].getGoodCapacity()+"噸"+
" "+daysNum+"天單項(xiàng)費(fèi)用:"+selected[i]*cars[i].getFee()*daysNum+"元");
total += selected[i]*cars[i].getFee()*daysNum;
}
}
System.out.println("租車總費(fèi)用:" + total + "元" + "\n" + "歡迎下次光臨!------------------------");
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java圖片滑動(dòng)驗(yàn)證(登錄驗(yàn)證)原理與實(shí)現(xiàn)方法詳解
這篇文章主要介紹了java圖片滑動(dòng)驗(yàn)證(登錄驗(yàn)證)原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了java圖片滑動(dòng)登錄驗(yàn)證的相關(guān)原理、實(shí)現(xiàn)方法與操作技巧,需要的朋友可以參考下2019-09-09
java實(shí)現(xiàn)請(qǐng)求緩沖合并的示例代碼
我們對(duì)外提供了一個(gè)rest接口給第三方業(yè)務(wù)進(jìn)行調(diào)用,但是由于第三方框架限制,導(dǎo)致會(huì)發(fā)送大量相似無(wú)效請(qǐng)求,這篇文章主要介紹了java實(shí)現(xiàn)請(qǐng)求緩沖合并,需要的朋友可以參考下2024-04-04
Java實(shí)體類中Set按照對(duì)象的某個(gè)字段對(duì)set排序
這篇文章主要介紹了Java實(shí)體類中Set按照對(duì)象的某個(gè)字段對(duì)set排序,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-06-06
Java線程的并發(fā)工具類實(shí)現(xiàn)原理解析
本文給大家講解Java線程的并發(fā)工具類的一些知識(shí),通過適用場(chǎng)景分析大數(shù)據(jù)量統(tǒng)計(jì)類任務(wù)的實(shí)現(xiàn)原理和封裝,多個(gè)示例代碼講解的非常詳細(xì),對(duì)java線程并發(fā)工具類相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)下吧2021-06-06
SpringBoot Admin健康檢查功能的實(shí)現(xiàn)
admin主要就是告訴運(yùn)維人員,服務(wù)出現(xiàn)異常,然后進(jìn)行通知(微信、郵件、短信、釘釘?shù)龋┛梢苑浅?焖偻ㄖ竭\(yùn)維人員,相當(dāng)報(bào)警功能,接下來(lái)通過本文給大家介紹SpringBoot Admin健康檢查的相關(guān)知識(shí),一起看看吧2021-06-06
Spring Shell應(yīng)用程序開發(fā)流程解析
這篇文章主要介紹了Spring Shell應(yīng)用程序開發(fā)流程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
詳解Spring學(xué)習(xí)總結(jié)——Spring實(shí)現(xiàn)AOP的多種方式
這篇文章主要介紹了詳解Spring學(xué)習(xí)總結(jié)——Spring實(shí)現(xiàn)AOP的多種方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-01-01
spring mvc實(shí)現(xiàn)登錄賬號(hào)單瀏覽器登錄
這篇文章主要為大家詳細(xì)介紹了spring mvc實(shí)現(xiàn)登錄賬號(hào)單瀏覽器登錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Spring?Boot配置內(nèi)容加密實(shí)現(xiàn)敏感信息保護(hù)
之前我們講過的配置相關(guān)知識(shí)都是Spring?Boot原生就提供的,而今天我們將介紹的功能并非Spring?Boot原生就支持,但卻非常有用:配置內(nèi)容的加密2021-11-11

