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

交作业啦啦啦啦

抽象父类

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);
}
}
}

运行结果:

https://img1.sycdn.imooc.com//5b694fe90001eb7a04750769.jpg


奇怪的是我生成jar后运行格式会错乱,有大佬解答一下吗


https://img1.sycdn.imooc.com//5b69502500010c2f07100718.jpg

正在回答

5 回答

因为你输出时没有控制格式,以下是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);

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

tronquick 提问者

感谢大佬
2018-08-13 回复 有任何疑惑可以回复我~

我想问一下,你那统计数据那块那个加号是什么意思,没见过这种用法啊!

https://img1.sycdn.imooc.com//5c346ef20001991304120440.jpg

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

...你所有子类除了类名都一样,定义子类意义何在?

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

假如我不使用get与set的话,直接创建car的方法,这样可行吗?


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

大佬,car类里面为什么要使用set和get啊,我只声明了抽象类和属性。set和get在里面是干什么的啊

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

qq_靠不住_0

我也想问问...
2018-08-18 回复 有任何疑惑可以回复我~
#2

真的菜的抠脚

get和set函数分别是用于获得变量的值和重置变量的值,因为为了保证数据的安全性,一般是将属性设为private或者protect,这个时候在类外无法访问,所以只能通过这两个函数
2018-09-27 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530629    人
  • 解答问题       6091    个

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

进入课程

交作业啦啦啦啦

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