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

提交作业,大家可以参考下,我觉得还能优化,望各位多提意见

package DDproject;


public abstract class car {     //汽车父类

public int id;

public String name;

    public int price;

    public int people;

    public int carry;

    public abstract void run();  

}

public class HuoCar extends car {   //货车子类

public HuoCar(int id,String name,int price,int carry) {

this.id=id;

this.name=name;

this.price=price;

this.carry=carry;

}      

public void run() {

System.out.println(id+"\t"+name+"\t"+price+"元/天"+"\t"+"载货:"+carry+"吨");

}


}

public class buscar extends car {         //载人子类

public buscar(int id,String name,int price,int people) {

this.id=id;

this.name=name;

this.price=price;

this.people=people;

}

public void run() {

System.out.println(id+"\t"+name+"\t"+price+"元/天"+"\t"+"载人:"+people+"人");

}

}

public class PKcar extends car {    //皮卡子类

public PKcar(int id,String name,int price,int people,int carry) {

this.id=id;

this.name=name;

this.price=price;

this.people=people;

this.carry=carry;

}

public void run() {

System.out.println(id+"\t"+name+"\t"+price+"元/天"+"\t"+"载人:"+people+"人"+"\t"+"载货:"+carry+"吨");

}

}

package DDproject;


import java.util.Scanner;


public class Demotest {      //测试类

public void ZuChe() {      //是否进人租车系统方法

Scanner input = new Scanner(System.in);

try {

int select = input.nextInt();

if (select == 1) {

means();

} else if (select == 0) {

System.out.println("感谢您使用答答租车系统~再见!");

} else {

System.out.println("您输入有误,请重新输入:");

System.out.println("您是否需要租车:1、是" + "\t" + "0、否");

ZuChe();

}

} catch (Exception e) {

System.out.println("您输入有误,请重新输入:");

System.out.println("您是否需要租车:1、是" + "\t" + "0、否");

ZuChe();

}

}


public void means() {     //租车系统选车主方法

car che[] = { new buscar(1, "奥迪4A", 500, 4), new buscar(2, "马自达6", 400, 4), new PKcar(3, "皮卡雪6", 450, 4, 2),

new buscar(4, "金龙", 800, 20), new HuoCar(5, "松花江", 400, 4), new HuoCar(6, "依维柯", 1000, 20) };

System.out.println("您可租车的类型及其价目表");

System.out.println("序号" + "\t" + "汽车名称" + "\t" + "租金" + "\t" + "容量");

for (int i = 0; i < che.length; i++) {

che[i].run();

}

double money = 0, ton = 0;

int sum = 0;

System.out.println("请输入您要汽车的数量:");

Scanner input = new Scanner(System.in);

int amount = input.nextInt();

int ID[] = new int[amount];

for (int i = 0; i < amount; i++) {

System.out.println("请输入第" + (i + 1) + "辆车的序号");

int id = input.nextInt();

money = money + che[id - 1].price;

sum = sum + che[id - 1].people;

ton = ton + che[id - 1].carry;

ID[i] = id;

}

System.out.println("请输入租车天数:");

int day = input.nextInt();

System.out.println("您的账单:");

System.out.println("***可载人的车有:");

for (int i = 0; i < ID.length; i++) {

if (che[ID[i] - 1].people != 0) {

System.out.print(che[ID[i] - 1].name + "\t");

}

}

System.out.println("共载人:" + sum + "人");

System.out.println("***可载货的车有:");

for (int i = 0; i < ID.length; i++) {

if (che[ID[i] - 1].carry != 0) {

System.out.print(che[ID[i] - 1].name + "\t");

}

}

System.out.println("共载货:" + ton + "吨");

System.out.println("***租车总价格:" + money * day + "元");

}


public static void main(String[] args) {

System.out.println("欢迎您是使用答答租车系统:");

System.out.println("您是否需要租车:1、是" + "\t" + "0、否");

Demotest t = new Demotest();

t.ZuChe();

}

}


正在回答

4 回答

我还是有个问题啊 ,就是载人的车和载重的车就没有区分呀 

载人的车打印的也是

System.out.print(che[ID[i] - 1].name + "\t");


载重的车打印也是

System.out.print(che[ID[i] - 1].name + "\t");



0 回复 有任何疑惑可以回复我~

try-catch那段,else{} 可以省掉,或者将try-catch换成while测无限循环语句,并且用while的话能用continue而不用嵌套,try-catch用在这感觉不合适;

总体感觉挺简洁到位的,赞?。

0 回复 有任何疑惑可以回复我~
#1

慕丝4409378 提问者

try-catch语句还是很有必要的,可以捕获异常,捕获输入字符不匹配,万一用户输入字母,运行就会中断。else也是很有必要,万一用户输入了比1还大的数字,运行也会中断。
2019-07-20 回复 有任何疑惑可以回复我~
#2

慕丝4409378 提问者

用try-catch语句比较安全
2019-07-20 回复 有任何疑惑可以回复我~

请问那个means();是什么意思?

0 回复 有任何疑惑可以回复我~
#1

qq_慕沐4213791

不好意思 没看到 现在看到了
2019-07-20 回复 有任何疑惑可以回复我~

你在父类里调用输出函数就可以。不需要每个子类都写

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

提交作业,大家可以参考下,我觉得还能优化,望各位多提意见

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信