抽象父类
public abstract class Car { public int id; public String name; public int price; public int sit; public int load; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public int getSit() { return sit; } public void setSit(int sit) { this.sit = sit; } public int getLoad() { return load; } public void setLoad(int load) { this.load = load; } public Car(){}; public Car(int id,String name,int price,int sit,int load){ this.id=id; this.name=name; this.price=price; this.sit=sit; this.load=load; } public abstract void show(); }
子类
public class CPickup extends Car { public CPickup(int id,String name,int price,int sit,int load){ this.id=id; this.name=name; this.price=price; this.sit=sit; this.load=load; } @Override public void show() { // TODO Auto-generated method stub {System.out.println(id+".\t"+name+"\t"+price+"元/天 "+"载人:"+sit+"载货:"+load); }} }
子类:
public class CSeden extends Car { public CSeden(int id,String name,int price,int sit,int load){ this.id=id; this.name=name; this.price=price; this.sit=sit; this.load=load; } @Override public void show() { // TODO Auto-generated method stub {System.out.println(id+".\t"+name+"\t"+price+"元/天 "+"载人:"+sit+"载货:"+load); }; } }
子类:
public class CTruck extends Car { public CTruck(int id,String name,int price,int sit,int load){ this.id=id; this.name=name; this.price=price; this.sit=sit; this.load=load; } @Override public void show() { // TODO Auto-generated method stub {System.out.println(id+".\t"+name+"\t"+price+"元/天 "+"载人:"+sit+"载货:"+load); } }}
Test类
import java.util.Scanner; public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Car a4=new CSeden(1,"奥迪A4 ",500,4,0); Car m6=new CSeden(2,"马自达6 ",400,4,0); Car p6=new CPickup(3,"皮卡雪6",450,4,2); Car gd=new CSeden(4,"金龙 ",800,20,0); Car slr=new CTruck(5,"松花江 ",400,0,4); Car evt=new CTruck(6,"伊维特",1000,0,20); Car car[]={a4,m6,p6,gd,slr,evt}; System.out.println("欢迎使用DD租车系统"); System.out.println("你是否要租车:\t1.是\t0.否"); Scanner in1=new Scanner(System.in); if(in1.nextInt()==1){ System.out.println("您可租车的类型及其价目表"); System.out.println("序号 \t汽车名称\t租金\t 容量"); a4.show(); m6.show(); p6.show(); gd.show(); slr.show(); evt.show(); //整合用户租借数据 //要租什么车 System.out.println("请输入您要租车的数量:"); Scanner in2=new Scanner(System.in); Scanner in3=new Scanner(System.in); int num=in2.nextInt(); //生成要借车的对象数组 Car[] zcar=new Car[num]; //租多少天 System.out.println("请输入您要租借的天数:"); Scanner in4=new Scanner(System.in); int days=in4.nextInt(); //整合 int j=0; for(int i=0;i<num;i++) { System.out.println("请输入第"+(i+1)+"辆车的序号:"); j=in3.nextInt(); zcar[i]=car[j-1]; } System.out.println("统计完成正在生成您的账单\n您的账单如下:"); //判断载人载货车型 System.out.println("可以载人的车有:"); for(int n=0;n<num;n++) {if(zcar[n].sit!=0) { System.out.print(zcar[n].name+" "); } } System.out.println("\n可以运货的车有:"); for(int m=0;m<num;m++) {if(zcar[m].load!=0) { System.out.println(zcar[m].name+" "); } } System.out.println("\n"); //统计数据 int sumSit = 0; int sumPrice=0; int sumLoad=0; for(int k=0;k<num;k++) { sumSit+=zcar[k].getSit(); sumPrice+=zcar[k].getPrice(); sumLoad+=zcar[k].getLoad(); } System.out.println("总载客量:"+sumSit); System.out.println("总运货量:"+sumLoad); System.out.println("总价格:"+sumPrice*days); } else { System.out.println("程序准备退出"); System.exit(0); } } }
运行结果:
奇怪的是我生成jar后运行格式会错乱,有大佬解答一下吗
因为你输出时没有控制格式,以下是Java的一些格式输出:
// "%"表示进行格式化输出,"%"之后的内容为格式的定义。
System.out.printf("%f", f);// "f"表示格式化输出浮点数。
System.out.println();
System.out.printf("%9.2f", f);// "9.2"中的9表示输出的长度,2表示小数点后的位数。
System.out.println();
System.out.printf("%+9.2f", f);// "+"表示输出的数带正负号。
System.out.println();
System.out.printf("%-9.4f", f);// "-"表示输出的数左对齐(默认为右对齐)。
System.out.println();
System.out.printf("%+-9.3f", f);// "+-"表示输出的数带正负号且左对齐。
System.out.println();
System.out.printf("%d", d);// "d"表示输出十进制整数。
System.out.println();
System.out.printf("%o", d);// "o"表示输出八进制整数。
System.out.println();
System.out.printf("%x", d);// "x"表示输出十六进制整数。
System.out.println();
System.out.printf("%#x", d);// "#x"表示输出带有十六进制标志的整数。
System.out.println();
System.out.printf("%#o", d);// "#o"表示输出带有八进制标志的整数。
System.out.println();
System.out.printf("%s", str);// "s"表示输出字符串。
System.out.println();
// 可以输出多个变量,注意顺序。
System.out.printf("输出一个浮点数:%f,一个整数:%d,一个字符串:%s", f, d, str);
我想问一下,你那统计数据那块那个加号是什么意思,没见过这种用法啊!
...你所有子类除了类名都一样,定义子类意义何在?
假如我不使用get与set的话,直接创建car的方法,这样可行吗?
大佬,car类里面为什么要使用set和get啊,我只声明了抽象类和属性。set和get在里面是干什么的啊